graphdb-workbench 2.2.3 → 2.2.4-TR2

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 (160) hide show
  1. package/dist/{102.7141102a059ef5eba1ea.bundle.js → 102.d52dc777ce7b5de1a30a.bundle.js} +2 -2
  2. package/dist/{102.7141102a059ef5eba1ea.bundle.js.map → 102.d52dc777ce7b5de1a30a.bundle.js.map} +1 -1
  3. package/dist/{104.ecd04b9cba294e159ca5.bundle.js → 104.09c8b5802e53cd9dced9.bundle.js} +2 -2
  4. package/dist/{104.ecd04b9cba294e159ca5.bundle.js.map → 104.09c8b5802e53cd9dced9.bundle.js.map} +1 -1
  5. package/dist/{107.5972b71755d2f24f6f44.bundle.js → 107.481f84627ac231f49e56.bundle.js} +2 -2
  6. package/dist/{107.5972b71755d2f24f6f44.bundle.js.map → 107.481f84627ac231f49e56.bundle.js.map} +1 -1
  7. package/dist/108.d61b0e4a54e1d0e6550d.bundle.js +2 -0
  8. package/dist/{108.162ea156d1fc4ad2525f.bundle.js.map → 108.d61b0e4a54e1d0e6550d.bundle.js.map} +1 -1
  9. package/dist/{11.f7cb87be309f6bd00aa5.bundle.js → 11.89d3de4f2e80e373ecf2.bundle.js} +3 -3
  10. package/dist/{11.f7cb87be309f6bd00aa5.bundle.js.map → 11.89d3de4f2e80e373ecf2.bundle.js.map} +1 -1
  11. package/dist/{115.abb22e52d5886ed645c1.bundle.js → 115.36a12f5a0804f33cb569.bundle.js} +2 -2
  12. package/dist/{115.abb22e52d5886ed645c1.bundle.js.map → 115.36a12f5a0804f33cb569.bundle.js.map} +1 -1
  13. package/dist/{117.ed07ffe3ff3bead9b43b.bundle.js → 117.9c58e6155d7467c45284.bundle.js} +2 -2
  14. package/dist/{117.ed07ffe3ff3bead9b43b.bundle.js.map → 117.9c58e6155d7467c45284.bundle.js.map} +1 -1
  15. package/dist/{118.57c922b04fbcf0d65d1c.bundle.js → 118.7cdbf2a7be83e4cdc7e2.bundle.js} +2 -2
  16. package/dist/{118.57c922b04fbcf0d65d1c.bundle.js.map → 118.7cdbf2a7be83e4cdc7e2.bundle.js.map} +1 -1
  17. package/dist/{119.7b75484ef37c16039937.bundle.js → 119.f7c106efa2582220baa7.bundle.js} +2 -2
  18. package/dist/{119.7b75484ef37c16039937.bundle.js.map → 119.f7c106efa2582220baa7.bundle.js.map} +1 -1
  19. package/dist/{12.eb41e4af80fee51d893c.bundle.js → 12.b4ac6d1ff3d669d3e63f.bundle.js} +2 -2
  20. package/dist/{12.eb41e4af80fee51d893c.bundle.js.map → 12.b4ac6d1ff3d669d3e63f.bundle.js.map} +1 -1
  21. package/dist/{120.0f42d5a0967c1f4636ca.bundle.js → 120.d20d9e20e2d3c5476f8d.bundle.js} +2 -2
  22. package/dist/{120.0f42d5a0967c1f4636ca.bundle.js.map → 120.d20d9e20e2d3c5476f8d.bundle.js.map} +1 -1
  23. package/dist/{121.f85253eb7e057efdb05d.bundle.js → 121.dc96efcaf4dc5e63f58d.bundle.js} +2 -2
  24. package/dist/{121.f85253eb7e057efdb05d.bundle.js.map → 121.dc96efcaf4dc5e63f58d.bundle.js.map} +1 -1
  25. package/dist/{126.349ebcea493c77fecf7e.bundle.js → 126.4c2fb40676d2508bbc65.bundle.js} +2 -2
  26. package/dist/{126.349ebcea493c77fecf7e.bundle.js.map → 126.4c2fb40676d2508bbc65.bundle.js.map} +1 -1
  27. package/dist/{13.bc3607638ad1e2068125.bundle.js → 13.f6b8f9a2288e2485ee20.bundle.js} +2 -2
  28. package/dist/{13.bc3607638ad1e2068125.bundle.js.map → 13.f6b8f9a2288e2485ee20.bundle.js.map} +1 -1
  29. package/dist/148.45985ae23de642595544.bundle.js +1 -1
  30. package/dist/148.45985ae23de642595544.bundle.js.map +1 -1
  31. package/dist/16.2ca98f5bec0fae221cef.bundle.js +3 -0
  32. package/dist/{16.cd06772f9e031d37db03.bundle.js.map → 16.2ca98f5bec0fae221cef.bundle.js.map} +1 -1
  33. package/dist/{17.45b5c34f6c73bde1113d.bundle.js → 17.b19a2d3870590d21e8e9.bundle.js} +2 -2
  34. package/dist/{17.45b5c34f6c73bde1113d.bundle.js.map → 17.b19a2d3870590d21e8e9.bundle.js.map} +1 -1
  35. package/dist/{19.92f27dd146df127e8d6e.bundle.js → 19.34c180252e48207f01b4.bundle.js} +3 -3
  36. package/dist/{19.92f27dd146df127e8d6e.bundle.js.map → 19.34c180252e48207f01b4.bundle.js.map} +1 -1
  37. package/dist/20.9e9e388a98851c65f8f7.bundle.js +2 -0
  38. package/dist/{20.4eb25ede434dc329ecf1.bundle.js.map → 20.9e9e388a98851c65f8f7.bundle.js.map} +1 -1
  39. package/dist/21.8434e1ecb6fcfa06e1f1.bundle.js +2 -0
  40. package/dist/21.8434e1ecb6fcfa06e1f1.bundle.js.map +1 -0
  41. package/dist/{23.16fc17b0a8983ce3d809.bundle.js → 23.22e3720d741ee87c8108.bundle.js} +2 -2
  42. package/dist/{23.16fc17b0a8983ce3d809.bundle.js.map → 23.22e3720d741ee87c8108.bundle.js.map} +1 -1
  43. package/dist/{24.04d84edbd8f93d036633.bundle.js → 24.63acd0fc451fc797ff79.bundle.js} +2 -2
  44. package/dist/{24.04d84edbd8f93d036633.bundle.js.map → 24.63acd0fc451fc797ff79.bundle.js.map} +1 -1
  45. package/dist/{26.3a642e64c7803f3b32f1.bundle.js → 26.194b2d09daa679b7e09c.bundle.js} +2 -2
  46. package/dist/{26.3a642e64c7803f3b32f1.bundle.js.map → 26.194b2d09daa679b7e09c.bundle.js.map} +1 -1
  47. package/dist/27.35fe33bb9622c2e29c43.bundle.js +2 -0
  48. package/dist/{27.fef157d9275358c9f1a0.bundle.js.map → 27.35fe33bb9622c2e29c43.bundle.js.map} +1 -1
  49. package/dist/{29.a1b30610d7960a86b1cb.bundle.js → 29.e4eadb676659c5d6e44b.bundle.js} +3 -3
  50. package/dist/{29.a1b30610d7960a86b1cb.bundle.js.map → 29.e4eadb676659c5d6e44b.bundle.js.map} +1 -1
  51. package/dist/{30.3a05504ff287ca6df711.bundle.js → 30.0fb90b3cdf78fcde6251.bundle.js} +2 -2
  52. package/dist/{30.3a05504ff287ca6df711.bundle.js.map → 30.0fb90b3cdf78fcde6251.bundle.js.map} +1 -1
  53. package/dist/{31.13d5a8e9834cd5db589c.bundle.js → 31.8dd9fe71d36bd04a0433.bundle.js} +2 -2
  54. package/dist/{31.13d5a8e9834cd5db589c.bundle.js.map → 31.8dd9fe71d36bd04a0433.bundle.js.map} +1 -1
  55. package/dist/{32.59a7369287d15e8b9ab6.bundle.js → 32.8e1c25a47debdf5145d8.bundle.js} +2 -2
  56. package/dist/{32.59a7369287d15e8b9ab6.bundle.js.map → 32.8e1c25a47debdf5145d8.bundle.js.map} +1 -1
  57. package/dist/33.89b51420b48880728b96.bundle.js +2 -0
  58. package/dist/33.89b51420b48880728b96.bundle.js.map +1 -0
  59. package/dist/{35.fe688fc32270724c391d.bundle.js → 35.a9846fba95e98a294957.bundle.js} +2 -2
  60. package/dist/{35.fe688fc32270724c391d.bundle.js.map → 35.a9846fba95e98a294957.bundle.js.map} +1 -1
  61. package/dist/{36.7da22f08c8e850885cc5.bundle.js → 36.4dbd0f9007404b0adbe2.bundle.js} +2 -2
  62. package/dist/{36.7da22f08c8e850885cc5.bundle.js.map → 36.4dbd0f9007404b0adbe2.bundle.js.map} +1 -1
  63. package/dist/37.ac99eb00fe71266c5bff.bundle.js +2 -0
  64. package/dist/{37.8a9855206d5ae5eba9be.bundle.js.map → 37.ac99eb00fe71266c5bff.bundle.js.map} +1 -1
  65. package/dist/{39.0eebc4b972cff879c1c9.bundle.js → 39.8f8ae5c232bd2f023e7c.bundle.js} +2 -2
  66. package/dist/{39.0eebc4b972cff879c1c9.bundle.js.map → 39.8f8ae5c232bd2f023e7c.bundle.js.map} +1 -1
  67. package/dist/4.5391679fa01c55e842cc.bundle.js +2 -0
  68. package/dist/4.5391679fa01c55e842cc.bundle.js.map +1 -0
  69. package/dist/{40.10f42e3f6d8d87bd3221.bundle.js → 40.50f010a0a0ce99da5092.bundle.js} +2 -2
  70. package/dist/{40.10f42e3f6d8d87bd3221.bundle.js.map → 40.50f010a0a0ce99da5092.bundle.js.map} +1 -1
  71. package/dist/{41.368780c518c3f6cab4b7.bundle.js → 41.d09e0f01eac3492e3376.bundle.js} +2 -2
  72. package/dist/{41.368780c518c3f6cab4b7.bundle.js.map → 41.d09e0f01eac3492e3376.bundle.js.map} +1 -1
  73. package/dist/{42.1a48ae582180fa6374f9.bundle.js → 42.9561ff9cd77df0f86a91.bundle.js} +2 -2
  74. package/dist/{42.1a48ae582180fa6374f9.bundle.js.map → 42.9561ff9cd77df0f86a91.bundle.js.map} +1 -1
  75. package/dist/{43.64268be8880acd392fee.bundle.js → 43.0400aae23dac518b78ec.bundle.js} +2 -2
  76. package/dist/{43.64268be8880acd392fee.bundle.js.map → 43.0400aae23dac518b78ec.bundle.js.map} +1 -1
  77. package/dist/{53.58a23efc22865c67d57d.bundle.js → 53.54b20545d5504efa8958.bundle.js} +2 -2
  78. package/dist/{53.58a23efc22865c67d57d.bundle.js.map → 53.54b20545d5504efa8958.bundle.js.map} +1 -1
  79. package/dist/{54.1e2e99cd8cdf20b99a4f.bundle.js → 54.81f97307e31f5eabb5f0.bundle.js} +2 -2
  80. package/dist/{54.1e2e99cd8cdf20b99a4f.bundle.js.map → 54.81f97307e31f5eabb5f0.bundle.js.map} +1 -1
  81. package/dist/{55.693c1a0dd775181e1e29.bundle.js → 55.e8df33b84ca578a9a633.bundle.js} +2 -2
  82. package/dist/{55.693c1a0dd775181e1e29.bundle.js.map → 55.e8df33b84ca578a9a633.bundle.js.map} +1 -1
  83. package/dist/{56.62459de7af529d956b75.bundle.js → 56.d765faad673f618d41b0.bundle.js} +2 -2
  84. package/dist/{56.62459de7af529d956b75.bundle.js.map → 56.d765faad673f618d41b0.bundle.js.map} +1 -1
  85. package/dist/{60.2cb24e628b92cb3e0210.bundle.js → 60.f13766507ec5f29fde78.bundle.js} +2 -2
  86. package/dist/{60.2cb24e628b92cb3e0210.bundle.js.map → 60.f13766507ec5f29fde78.bundle.js.map} +1 -1
  87. package/dist/{65.6c12c48ac0d6f57a5079.bundle.js → 65.aa9736b7aad2582ca7ea.bundle.js} +2 -2
  88. package/dist/{65.6c12c48ac0d6f57a5079.bundle.js.map → 65.aa9736b7aad2582ca7ea.bundle.js.map} +1 -1
  89. package/dist/{67.5ae0610f77a1455ce92b.bundle.js → 67.e7bd652fadf93be1fbae.bundle.js} +2 -2
  90. package/dist/{67.5ae0610f77a1455ce92b.bundle.js.map → 67.e7bd652fadf93be1fbae.bundle.js.map} +1 -1
  91. package/dist/{69.90776e70cb361d1ac6d5.bundle.js → 69.6b915e6a7a9c36a78e2b.bundle.js} +2 -2
  92. package/dist/{69.90776e70cb361d1ac6d5.bundle.js.map → 69.6b915e6a7a9c36a78e2b.bundle.js.map} +1 -1
  93. package/dist/{71.3e927496e6e4175a3127.bundle.js → 71.624ca936339bf337e46a.bundle.js} +2 -2
  94. package/dist/{71.3e927496e6e4175a3127.bundle.js.map → 71.624ca936339bf337e46a.bundle.js.map} +1 -1
  95. package/dist/{72.bc99fbec188b4e49aa53.bundle.js → 72.3a5620a182219e9ea05d.bundle.js} +2 -2
  96. package/dist/{72.bc99fbec188b4e49aa53.bundle.js.map → 72.3a5620a182219e9ea05d.bundle.js.map} +1 -1
  97. package/dist/{73.40b5cbae08c7f3a58438.bundle.js → 73.f162e544378754078826.bundle.js} +2 -2
  98. package/dist/{73.40b5cbae08c7f3a58438.bundle.js.map → 73.f162e544378754078826.bundle.js.map} +1 -1
  99. package/dist/{74.cc42a1dcef7e9b830354.bundle.js → 74.7595755907badb1a99b8.bundle.js} +2 -2
  100. package/dist/{74.cc42a1dcef7e9b830354.bundle.js.map → 74.7595755907badb1a99b8.bundle.js.map} +1 -1
  101. package/dist/{75.31d1a4766c80c90b2afc.bundle.js → 75.4cc7ff534d56a05c578a.bundle.js} +2 -2
  102. package/dist/{75.31d1a4766c80c90b2afc.bundle.js.map → 75.4cc7ff534d56a05c578a.bundle.js.map} +1 -1
  103. package/dist/{76.89d209ce08efa7429e87.bundle.js → 76.cd0cfea4c96e88230dbe.bundle.js} +2 -2
  104. package/dist/{76.89d209ce08efa7429e87.bundle.js.map → 76.cd0cfea4c96e88230dbe.bundle.js.map} +1 -1
  105. package/dist/{77.64c49e9e99b0ae3fbbca.bundle.js → 77.df7767b1a0a3a0efa202.bundle.js} +2 -2
  106. package/dist/{77.64c49e9e99b0ae3fbbca.bundle.js.map → 77.df7767b1a0a3a0efa202.bundle.js.map} +1 -1
  107. package/dist/{79.0fbaedffc1f583a6064f.bundle.js → 79.4d64b377b0308809136f.bundle.js} +2 -2
  108. package/dist/{79.0fbaedffc1f583a6064f.bundle.js.map → 79.4d64b377b0308809136f.bundle.js.map} +1 -1
  109. package/dist/{80.6d489af9482e358c8dd8.bundle.js → 80.36e424031127d1743f20.bundle.js} +2 -2
  110. package/dist/{80.6d489af9482e358c8dd8.bundle.js.map → 80.36e424031127d1743f20.bundle.js.map} +1 -1
  111. package/dist/{94.94158487a9024ff3a623.bundle.js → 94.b1ccdd207229ae57569f.bundle.js} +2 -2
  112. package/dist/{94.94158487a9024ff3a623.bundle.js.map → 94.b1ccdd207229ae57569f.bundle.js.map} +1 -1
  113. package/dist/{97.48e14b67906b4d61a1b1.bundle.js → 97.951e03ffd2d5a10f868d.bundle.js} +2 -2
  114. package/dist/{97.48e14b67906b4d61a1b1.bundle.js.map → 97.951e03ffd2d5a10f868d.bundle.js.map} +1 -1
  115. package/dist/{98.cc7086155b76601af017.bundle.js → 98.745b4c457214d4189d7a.bundle.js} +2 -2
  116. package/dist/{98.cc7086155b76601af017.bundle.js.map → 98.745b4c457214d4189d7a.bundle.js.map} +1 -1
  117. package/dist/{bundle.d34ddcc40dd190254f1c.bundle.js → bundle.651116fe2383a66f32c9.bundle.js} +21 -21
  118. package/dist/{bundle.d34ddcc40dd190254f1c.bundle.js.map → bundle.651116fe2383a66f32c9.bundle.js.map} +1 -1
  119. package/dist/index.html +3 -3
  120. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  121. package/dist/pages/autocomplete.html +1 -1
  122. package/dist/pages/choose-repository-type.html +1 -1
  123. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  124. package/dist/pages/create-index.html +4 -4
  125. package/dist/pages/dependencies.html +1 -1
  126. package/dist/pages/domainRangeInfo.html +2 -2
  127. package/dist/pages/edit.html +1 -1
  128. package/dist/pages/explore.html +1 -1
  129. package/dist/pages/export.html +1 -1
  130. package/dist/pages/find.html +1 -1
  131. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  132. package/dist/pages/graphs-visualizations.html +7 -7
  133. package/dist/pages/guides.html +1 -1
  134. package/dist/pages/import.html +1 -1
  135. package/dist/pages/jdbc-create.html +5 -5
  136. package/dist/pages/monitor/queries.html +1 -1
  137. package/dist/pages/monitor/resources.html +2 -2
  138. package/dist/pages/namespaces.html +2 -2
  139. package/dist/pages/plugins.html +1 -1
  140. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  141. package/dist/pages/rdfrank.html +2 -2
  142. package/dist/pages/repositories.html +2 -2
  143. package/dist/pages/repository.html +2 -2
  144. package/dist/pages/similarity-indexes.html +1 -1
  145. package/dist/pages/sparql-template-create.html +5 -5
  146. package/dist/pages/sparql.html +3 -3
  147. package/dist/pages/webapi.html +2 -2
  148. package/dist/res/swagger/index.html +27 -27
  149. package/package.json +1 -1
  150. package/dist/108.162ea156d1fc4ad2525f.bundle.js +0 -2
  151. package/dist/16.cd06772f9e031d37db03.bundle.js +0 -3
  152. package/dist/20.4eb25ede434dc329ecf1.bundle.js +0 -2
  153. package/dist/21.5586732af2e5cec0d05a.bundle.js +0 -2
  154. package/dist/21.5586732af2e5cec0d05a.bundle.js.map +0 -1
  155. package/dist/27.fef157d9275358c9f1a0.bundle.js +0 -2
  156. package/dist/33.fde8076c81c87c25c367.bundle.js +0 -2
  157. package/dist/33.fde8076c81c87c25c367.bundle.js.map +0 -1
  158. package/dist/37.8a9855206d5ae5eba9be.bundle.js +0 -2
  159. package/dist/4.ca3eb6b5da0890c0abe0.bundle.js +0 -2
  160. package/dist/4.ca3eb6b5da0890c0abe0.bundle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/explore/app.js","webpack:///./src/js/lib/angucomplete-alt/angucomplete-alt-onto.min.js","webpack:///./src/js/angular/core/directives/fit-text.directive.js","webpack:///./src/js/angular/explore/statements.service.js","webpack:///./src/js/angular/explore/directives.js"],"names":["angular","module","root","factory","directive","$q","$parse","$http","$sce","$timeout","$templateCache","$interpolate","$rootScope","link","scope","elem","attrs","ctrl","hideTimer","responseFormatter","unbindInitialValue","displaySearching","displayNoResults","fn","inputField","find","minlength","searchTimer","requiredClassName","validState","httpCanceller","dd","querySelector","isScrollOn","mousedownOn","handleInputChange","newval","initial","uri","extractTitle","callOrAssign","originalObject","length","console","error","handleRequired","clickoutHandlerForDropdown","event","hideResults","document","body","removeEventListener","ie8EventNormalizer","which","keyCode","value","selectedObject","data","titleField","split","map","field","extractValue","join","obj","key","keys","result","i","findMatchString","target","str","matches","re","RegExp","replace","match","toString","matchClass","trustAsHtml","valid","notEmpty","fieldRequired","inputName","$setValidity","handleOverrideSuggestions","overrideSuggestions","preventDefault","cancel","cancelHttpRequest","clearSelected","clearResults","dropdownRow","querySelectorAll","currentIndex","dropdownScrollTopTo","offset","scrollTop","updateInputField","current","results","extractedTitle","val","title","httpSuccessCallbackGen","responseData","status","headers","config","searching","processResults","remoteUrlDataField","httpErrorCallback","errorRes","remoteUrlErrorCallback","resolve","getRemoteResults","params","url","remoteUrl","encodeuriComponent","remoteUrlRequestFormatter","remoteUrlRequestWithCredentials","withCredentials","defer","timeout","promise","get","success","getRemoteResultsWithCustomHandler","remoteApiHandler","then","catch","showDropdown","initResults","focusFirst","searchTimerComplete","localData","$apply","localSearch","s","searchFields","parseInput","toLowerCase","indexOf","getLocalResults","description","image","text","formattedText","formattedDesc","descriptionField","imageField","autoMatch","selectResult","checkExactMatch","desc","showAll","on","id","addEventListener","className","$watch","oldval","$on","elementId","onFocusHandler","focusIn","focusOut","resetHideResults","hoverRow","index","inputChangeHandler","inputChanged","fieldRequiredClass","parseInt","pause","initialValue","inputType","type","textSearching","textNoResults","maxlength","row","rowTop","getBoundingClientRect","top","getComputedStyle","maxHeight","bottom","css","offsetHeight","marginTop","marginBottom","dropdownRowOffsetHeight","paddingTop","$digest","overflowY","put","restrict","require","disableInput","disableSuggestions","remoteUrlResponseFormatter","placeholder","inputClass","fieldTabindex","templateUrl","element","compile","tElement","startSym","startSymbol","endSym","endSymbol","interpolatedHtml","html","window","fitTextDirective","min","max","_","debounce","fitTextMin","fitTextMax","parent","domElem","domElemStyle","style","computed","newlines","children","lines","minFontSize","maxFontSize","lineHeight","display","resizePromise","calculate","ratio","calcSize","offsetWidth","Math","paddingLeft","parseFloat","paddingRight","compressor","getMaxFontSize","resizer","fontSize","loadDelay","$","delay","off","$inject","StatementsService","transformToTrig","statements","contexts","statement","undefined","context","trim","isUndefined","cstatement","push","ckeys","Object","j","subject","predicate","object","datatype","lang","buildStatements","res","isEmpty","graph","predicates","objects","k","graphs","getDatatypeOptions","label","UriUtils","attr","ngModel","$parsers","unshift","isValidUri","validateRdfUri","$formatters"],"mappings":"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","file":"19.92f27dd146df127e8d6e.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/explore/statements.service';\nimport 'angular/explore/controllers';\nimport 'angular/explore/directives';\nimport 'angular-xeditable/dist/js/xeditable.min';\nimport 'lib/angucomplete-alt/angucomplete-alt-onto.min';\nimport 'angular/core/directives/fit-text.directive';\n\nconst modules = [\n 'ngRoute',\n 'toastr',\n 'xeditable',\n 'angucomplete-alt-onto',\n 'graphdb.framework.explore.services',\n 'graphdb.framework.explore.controllers',\n 'graphdb.framework.explore.directives',\n 'graphdb.framework.core.directives.fittext'\n];\n\nangular.module('graphdb.framework.explore', modules);\n","/*\n * angucomplete-alt\n * Autocomplete directive for AngularJS\n * This is a fork of Daryl Rowland's angucomplete with some extra features.\n * By Hidenari Nozaki\n */\n\n/*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */\n\n(function (root, factory) {\n 'use strict';\n// if (typeof module !== 'undefined' && module.exports) {\n// // CommonJS\n// module.exports = factory(require('angular'));\n// } else if (typeof define === 'function' && define.amd) {\n// // AMD\n// define(['angular'], factory);\n// } else {\n// // Global Variables\n factory(root.angular);\n// }\n}(window, function (angular) {\n 'use strict';\n\n angular.module('angucomplete-alt-onto', []).directive('angucompleteAltOnto', ['$q', '$parse', '$http', '$sce', '$timeout', '$templateCache', '$interpolate', '$rootScope', function ($q, $parse, $http, $sce, $timeout, $templateCache, $interpolate, $rootScope) {\n // keyboard events\n var KEY_DW = 40;\n var KEY_RT = 39;\n var KEY_UP = 38;\n var KEY_LF = 37;\n var KEY_ES = 27;\n var KEY_EN = 13;\n var KEY_TAB = 9;\n\n var MIN_LENGTH = 3;\n var MAX_LENGTH = 524288; // the default max length per the html maxlength attribute\n var PAUSE = 500;\n var BLUR_TIMEOUT = 200;\n\n // string constants\n var REQUIRED_CLASS = 'autocomplete-required';\n var TEXT_SEARCHING = 'Searching...';\n var TEXT_NORESULTS = 'No results found';\n var TEMPLATE_URL = '/angucomplete-alt/index.html';\n\n // Set the default template for this directive\n $templateCache.put(TEMPLATE_URL,\n '<div class=\"angucomplete-holder\" ng-class=\"{\\'angucomplete-dropdown-visible\\': showDropdown}\">' +\n ' <input id=\"{{id}}_value\" name=\"{{inputName}}\" tabindex=\"{{fieldTabindex}}\" ng-class=\"{\\'angucomplete-input-not-empty\\': notEmpty}\" ng-model=\"uri\" ng-disabled=\"disableInput\" type=\"{{inputType}}\" placeholder=\"{{placeholder}}\" maxlength=\"{{maxlength}}\" ng-focus=\"onFocusHandler()\" class=\"{{inputClass}}\" ng-focus=\"resetHideResults()\" ng-blur=\"hideResults($event)\" autocapitalize=\"off\" autocorrect=\"off\" autocomplete=\"off\" ng-change=\"inputChangeHandler(uri)\" style=\"overflow: hidden; padding-right: .5em;\"/>' +\n ' <div id=\"{{id}}_dropdown\" class=\"angucomplete-dropdown\" ng-show=\"disableSuggestions && showDropdown\">' +\n ' <div class=\"angucomplete-searching\" ng-show=\"searching\" ng-bind=\"textSearching\"></div>' +\n ' <div class=\"angucomplete-searching\" ng-show=\"!searching && (!results || results.length == 0)\" ng-bind=\"textNoResults\"></div>' +\n ' <div class=\"angucomplete-row\" ng-repeat=\"result in results\" ng-click=\"selectResult(result)\" ng-mouseenter=\"hoverRow($index)\" ng-class=\"{\\'angucomplete-selected-row\\': $index == currentIndex}\">' +\n ' <div ng-if=\"imageField\" class=\"angucomplete-image-holder\">' +\n ' <img ng-if=\"result.image && result.image != \\'\\'\" ng-src=\"{{result.image}}\" class=\"angucomplete-image\"/>' +\n ' <div ng-if=\"!result.image && result.image != \\'\\'\" class=\"angucomplete-image-default\"></div>' +\n ' </div>' +\n ' <div class=\"angucomplete-title\" ng-if=\"matchClass\" ng-bind-html=\"result.title\"></div>' +\n ' <div class=\"angucomplete-title\" ng-if=\"!matchClass\">{{ result.title }}</div>' +\n ' <div ng-if=\"matchClass && result.description && result.description != \\'\\'\" class=\"angucomplete-description\" ng-bind-html=\"result.description\"></div>' +\n ' <div ng-if=\"!matchClass && result.description && result.description != \\'\\'\" class=\"angucomplete-description\">{{result.description}}</div>' +\n ' </div>' +\n ' </div>' +\n '</div>'\n );\n\n function link(scope, elem, attrs, ctrl) {\n var inputField = elem.find('input');\n var minlength = MIN_LENGTH;\n var searchTimer = null;\n var hideTimer;\n var requiredClassName = REQUIRED_CLASS;\n var responseFormatter;\n var validState = null;\n var httpCanceller = null;\n var dd = elem[0].querySelector('.angucomplete-dropdown');\n var isScrollOn = false;\n var mousedownOn = null;\n var unbindInitialValue;\n var displaySearching;\n var displayNoResults;\n\n\n elem.on('mousedown', function(event) {\n if (event.target.id) {\n mousedownOn = event.target.id;\n if (mousedownOn === scope.id + '_dropdown') {\n document.body.addEventListener('click', clickoutHandlerForDropdown);\n }\n }\n else {\n mousedownOn = event.target.className;\n }\n });\n\n scope.currentIndex = scope.focusFirst ? 0 : null;\n scope.searching = false;\n unbindInitialValue = scope.$watch('initialValue', function(newval) {\n if (newval) {\n // remove scope listener\n unbindInitialValue();\n // change input\n handleInputChange(newval, true);\n }\n });\n\n scope.$watch('fieldRequired', function(newval, oldval) {\n if (newval !== oldval) {\n if (!newval) {\n ctrl[scope.inputName].$setValidity(requiredClassName, true);\n }\n else if (!validState || scope.currentIndex === -1) {\n handleRequired(false);\n }\n else {\n handleRequired(true);\n }\n }\n });\n\n scope.$on('angucomplete-alt:clearInput', function (event, elementId) {\n if (!elementId || elementId === scope.id) {\n scope.uri = null;\n callOrAssign();\n handleRequired(false);\n clearResults();\n }\n });\n\n scope.$on('angucomplete-alt:changeInput', function (event, elementId, newval) {\n if (!!elementId && elementId === scope.id) {\n handleInputChange(newval);\n }\n });\n\n function handleInputChange(newval, initial) {\n if (newval) {\n if (typeof newval === 'object') {\n scope.uri = extractTitle(newval);\n callOrAssign({originalObject: newval});\n } else if (typeof newval === 'string' && newval.length > 0) {\n scope.uri = newval;\n } else {\n if (console && console.error) {\n console.error('Tried to set ' + (!!initial ? 'initial' : '') + ' value of angucomplete to', newval, 'which is an invalid value');\n }\n }\n\n handleRequired(true);\n }\n }\n\n // #194 dropdown list not consistent in collapsing (bug).\n function clickoutHandlerForDropdown(event) {\n mousedownOn = null;\n scope.hideResults(event);\n document.body.removeEventListener('click', clickoutHandlerForDropdown);\n }\n\n // for IE8 quirkiness about event.which\n function ie8EventNormalizer(event) {\n return event.which ? event.which : event.keyCode;\n }\n\n function callOrAssign(value) {\n if (typeof scope.selectedObject === 'function') {\n scope.selectedObject(value);\n }\n else {\n scope.selectedObject = value;\n }\n\n if (value) {\n handleRequired(true);\n }\n else {\n handleRequired(false);\n }\n }\n\n function callFunctionOrIdentity(fn) {\n return function(data) {\n return scope[fn] ? scope[fn](data) : data;\n };\n }\n\n function setInputString(str) {\n callOrAssign({originalObject: str});\n\n if (scope.clearSelected) {\n scope.uri = null;\n }\n clearResults();\n }\n\n function extractTitle(data) {\n // split title fields and run extractValue for each and join with ' '\n return scope.titleField.split(',')\n .map(function(field) {\n return extractValue(data, field);\n })\n .join(' ');\n }\n\n function extractValue(obj, key) {\n var keys, result;\n if (key) {\n keys= key.split('.');\n result = obj;\n for (var i = 0; i < keys.length; i++) {\n result = result[keys[i]];\n }\n }\n else {\n result = obj;\n }\n\n return result;\n }\n\n function findMatchString(target, str) {\n var result, matches, re;\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n // Escape user input to be treated as a literal string within a regular expression\n re = new RegExp(str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i');\n if (!target) { return; }\n if (!target.match || !target.replace) { target = target.toString(); }\n matches = target.match(re);\n if (matches) {\n result = target.replace(re,\n '<span class=\"'+ scope.matchClass +'\">'+ matches[0] +'</span>');\n }\n else {\n result = target;\n }\n return $sce.trustAsHtml(result);\n }\n\n function handleRequired(valid) {\n scope.notEmpty = valid;\n validState = scope.uri;\n if (scope.fieldRequired && ctrl && scope.inputName) {\n ctrl[scope.inputName].$setValidity(requiredClassName, valid);\n }\n }\n\n function keyupHandler(event) {\n var which = ie8EventNormalizer(event);\n if (which === KEY_LF || which === KEY_RT) {\n // do nothing\n return;\n }\n\n if (which === KEY_UP || which === KEY_EN) {\n event.preventDefault();\n }\n else if (which === KEY_DW) {\n event.preventDefault();\n if (!scope.showDropdown && scope.uri && scope.uri.length >= minlength) {\n initResults();\n scope.searching = true;\n searchTimerComplete(scope.uri);\n }\n }\n else if (which === KEY_ES) {\n clearResults();\n scope.$apply(function() {\n inputField.val(scope.uri);\n });\n }\n else {\n if (minlength === 0 && !scope.uri) {\n return;\n }\n\n if (!scope.uri || scope.uri === '') {\n scope.showDropdown = false;\n } else if (scope.uri.length >= minlength) {\n initResults();\n\n if (searchTimer) {\n $timeout.cancel(searchTimer);\n }\n\n scope.searching = true;\n\n searchTimer = $timeout(function() {\n searchTimerComplete(scope.uri);\n }, scope.pause);\n }\n\n if (validState && validState !== scope.uri && !scope.clearSelected) {\n scope.$apply(function() {\n callOrAssign();\n });\n }\n }\n }\n\n function handleOverrideSuggestions(event) {\n if (scope.overrideSuggestions &&\n !(scope.selectedObject && scope.selectedObject.originalObject === scope.uri)) {\n if (event) {\n event.preventDefault();\n }\n\n // cancel search timer\n $timeout.cancel(searchTimer);\n // cancel http request\n cancelHttpRequest();\n\n setInputString(scope.uri);\n }\n }\n\n function dropdownRowOffsetHeight(row) {\n var css = getComputedStyle(row);\n return row.offsetHeight +\n parseInt(css.marginTop, 10) + parseInt(css.marginBottom, 10);\n }\n\n function dropdownHeight() {\n return dd.getBoundingClientRect().top +\n parseInt(getComputedStyle(dd).maxHeight, 10);\n }\n\n function dropdownRow() {\n return elem[0].querySelectorAll('.angucomplete-row')[scope.currentIndex];\n }\n\n function dropdownRowTop() {\n return dropdownRow().getBoundingClientRect().top -\n (dd.getBoundingClientRect().top +\n parseInt(getComputedStyle(dd).paddingTop, 10));\n }\n\n function dropdownScrollTopTo(offset) {\n dd.scrollTop = dd.scrollTop + offset;\n }\n\n function updateInputField(){\n var current = scope.results[scope.currentIndex];\n if (scope.matchClass) {\n var extractedTitle = extractTitle(current.originalObject);\n extractedTitle = extractedTitle.replace(/<b>|<\\/b>/g, \"\");\n inputField.val(extractedTitle);\n }\n else {\n inputField.val(current.title);\n }\n }\n\n function keydownHandler(event) {\n var which = ie8EventNormalizer(event);\n var row = null;\n var rowTop = null;\n\n if (which === KEY_EN && scope.results) {\n if (scope.currentIndex >= 0 && scope.currentIndex < scope.results.length) {\n event.preventDefault();\n scope.selectResult(scope.results[scope.currentIndex]);\n } else {\n handleOverrideSuggestions(event);\n clearResults();\n }\n scope.$apply();\n } else if (which === KEY_DW && scope.results) {\n event.preventDefault();\n if ((scope.currentIndex + 1) < scope.results.length && scope.showDropdown) {\n scope.$apply(function() {\n scope.currentIndex ++;\n updateInputField();\n });\n\n if (isScrollOn) {\n row = dropdownRow();\n if (dropdownHeight() < row.getBoundingClientRect().bottom) {\n dropdownScrollTopTo(dropdownRowOffsetHeight(row));\n }\n }\n }\n } else if (which === KEY_UP && scope.results) {\n event.preventDefault();\n if (scope.currentIndex >= 1) {\n scope.$apply(function() {\n scope.currentIndex --;\n updateInputField();\n });\n\n if (isScrollOn) {\n rowTop = dropdownRowTop();\n if (rowTop < 0) {\n dropdownScrollTopTo(rowTop - 1);\n }\n }\n }\n else if (scope.currentIndex === 0) {\n scope.$apply(function() {\n scope.currentIndex = -1;\n inputField.val(scope.uri);\n });\n }\n } else if (which === KEY_TAB) {\n if (scope.results && scope.results.length > 0 && scope.showDropdown) {\n if (scope.currentIndex === -1 && scope.overrideSuggestions) {\n // intentionally not sending event so that it does not\n // prevent default tab behavior\n handleOverrideSuggestions();\n }\n else {\n if (scope.currentIndex === -1) {\n scope.currentIndex = 0;\n }\n scope.selectResult(scope.results[scope.currentIndex]);\n scope.$digest();\n }\n }\n else {\n // no results\n // intentionally not sending event so that it does not\n // prevent default tab behavior\n if (scope.uri && scope.uri.length > 0) {\n handleOverrideSuggestions();\n }\n }\n } else if (which === KEY_ES) {\n // This is very specific to IE10/11 #272\n // without this, IE clears the input text\n event.preventDefault();\n }\n }\n\n function httpSuccessCallbackGen(str) {\n return function(responseData, status, headers, config) {\n // normalize return obejct from promise\n if (!status && !headers && !config && responseData.data) {\n responseData = responseData.data;\n }\n scope.searching = false;\n processResults(extractValue(responseFormatter(responseData), scope.remoteUrlDataField), str);\n };\n }\n\n function httpErrorCallback(errorRes, status, headers, config) {\n // cancelled/aborted\n if (status === 0 || status === -1) { return; }\n\n // normalize return obejct from promise\n if (!status && !headers && !config) {\n status = errorRes.status;\n }\n if (scope.remoteUrlErrorCallback) {\n scope.remoteUrlErrorCallback(errorRes, status, headers, config);\n }\n else {\n if (console && console.error) {\n console.error('http error');\n }\n }\n }\n\n function cancelHttpRequest() {\n if (httpCanceller) {\n httpCanceller.resolve();\n }\n }\n\n function getRemoteResults(str) {\n var params = {},\n url = scope.remoteUrl + encodeuriComponent(str);\n if (scope.remoteUrlRequestFormatter) {\n params = {params: scope.remoteUrlRequestFormatter(str)};\n url = scope.remoteUrl;\n }\n if (!!scope.remoteUrlRequestWithCredentials) {\n params.withCredentials = true;\n }\n cancelHttpRequest();\n httpCanceller = $q.defer();\n params.timeout = httpCanceller.promise;\n $http.get(url, params)\n .success(httpSuccessCallbackGen(str))\n .error(httpErrorCallback);\n }\n\n function getRemoteResultsWithCustomHandler(str) {\n cancelHttpRequest();\n\n httpCanceller = $q.defer();\n\n scope.remoteApiHandler(str, httpCanceller.promise)\n .then(httpSuccessCallbackGen(str))\n .catch(httpErrorCallback);\n\n /* IE8 compatible\n scope.remoteApiHandler(str, httpCanceller.promise)\n ['then'](httpSuccessCallbackGen(str))\n ['catch'](httpErrorCallback);\n */\n }\n\n function clearResults() {\n scope.showDropdown = false;\n scope.results = [];\n if (dd) {\n dd.scrollTop = 0;\n }\n }\n\n function initResults() {\n scope.showDropdown = displaySearching;\n scope.currentIndex = scope.focusFirst ? 0 : -1;\n scope.results = [];\n }\n\n function getLocalResults(str) {\n var i, match, s, value,\n searchFields = scope.searchFields.split(','),\n matches = [];\n if (typeof scope.parseInput() !== 'undefined') {\n str = scope.parseInput()(str);\n }\n for (i = 0; i < scope.localData.length; i++) {\n match = false;\n\n for (s = 0; s < searchFields.length; s++) {\n value = extractValue(scope.localData[i], searchFields[s]) || '';\n match = match || (value.toString().toLowerCase().indexOf(str.toString().toLowerCase()) >= 0);\n }\n\n if (match) {\n matches[matches.length] = scope.localData[i];\n }\n }\n return matches;\n }\n\n function checkExactMatch(result, obj, str){\n if (!str) { return false; }\n for(var key in obj){\n if(obj[key].toLowerCase() === str.toLowerCase()){\n scope.selectResult(result);\n return true;\n }\n }\n return false;\n }\n\n function searchTimerComplete(str) {\n // Begin the search\n if (!str || str.length < minlength) {\n return;\n }\n if (scope.localData) {\n scope.$apply(function() {\n var matches;\n if (typeof scope.localSearch() !== 'undefined') {\n matches = scope.localSearch()(str);\n } else {\n matches = getLocalResults(str);\n }\n scope.searching = false;\n processResults(matches, str);\n });\n }\n else if (scope.remoteApiHandler) {\n getRemoteResultsWithCustomHandler(str);\n } else {\n getRemoteResults(str);\n }\n }\n\n function processResults(responseData, str) {\n var i, description, image, text, formattedText, formattedDesc;\n\n if (responseData && responseData.length > 0) {\n scope.results = [];\n\n for (i = 0; i < responseData.length; i++) {\n if (scope.titleField && scope.titleField !== '') {\n text = formattedText = extractTitle(responseData[i]);\n }\n\n description = '';\n if (scope.descriptionField) {\n description = formattedDesc = extractValue(responseData[i], scope.descriptionField);\n }\n\n image = '';\n if (scope.imageField) {\n image = extractValue(responseData[i], scope.imageField);\n }\n\n if (scope.matchClass) {\n formattedText = findMatchString(text, str);\n formattedDesc = findMatchString(description, str);\n }\n\n scope.results[scope.results.length] = {\n title: formattedText,\n description: formattedDesc,\n image: image,\n originalObject: responseData[i]\n };\n }\n\n } else {\n scope.results = [];\n }\n\n if (scope.autoMatch && scope.results.length === 1 &&\n checkExactMatch(scope.results[0],\n {title: text, desc: description || ''}, scope.uri)) {\n scope.showDropdown = false;\n } else if (scope.results.length === 0 && !displayNoResults) {\n scope.showDropdown = false;\n } else {\n scope.showDropdown = true;\n }\n }\n\n function showAll() {\n if (scope.localData) {\n processResults(scope.localData, '');\n }\n else if (scope.remoteApiHandler) {\n getRemoteResultsWithCustomHandler('');\n }\n else {\n getRemoteResults('');\n }\n }\n\n scope.onFocusHandler = function() {\n if (scope.focusIn) {\n scope.focusIn();\n }\n if (minlength === 0 && (!scope.uri || scope.uri.length === 0)) {\n scope.currentIndex = scope.focusFirst ? 0 : scope.currentIndex;\n scope.showDropdown = true;\n showAll();\n }\n };\n\n scope.hideResults = function() {\n if (mousedownOn &&\n (mousedownOn === scope.id + '_dropdown' ||\n mousedownOn.indexOf('angucomplete') >= 0)) {\n mousedownOn = null;\n }\n else {\n hideTimer = $timeout(function() {\n clearResults();\n scope.$apply(function() {\n if (scope.uri && scope.uri.length > 0) {\n inputField.val(scope.uri);\n }\n });\n }, BLUR_TIMEOUT);\n cancelHttpRequest();\n\n if (scope.focusOut) {\n scope.focusOut();\n }\n\n if (scope.overrideSuggestions) {\n if (scope.uri && scope.uri.length > 0 && scope.currentIndex === -1) {\n handleOverrideSuggestions();\n }\n }\n }\n };\n\n scope.resetHideResults = function() {\n if (hideTimer) {\n $timeout.cancel(hideTimer);\n }\n };\n\n scope.hoverRow = function(index) {\n scope.currentIndex = index;\n };\n\n scope.selectResult = function(result) {\n // Restore original values\n if (scope.matchClass) {\n result.title = extractTitle(result.originalObject);\n if (typeof result.title === \"string\") {\n result.title = result.title.replace(/<b>|<\\/b>/g, \"\");\n }\n result.description = extractValue(result.originalObject, scope.descriptionField);\n }\n\n if (scope.clearSelected) {\n scope.uri = null;\n }\n else {\n scope.uri = result.title;\n }\n callOrAssign(result);\n clearResults();\n };\n\n scope.inputChangeHandler = function(str) {\n if (str.length < minlength) {\n cancelHttpRequest();\n clearResults();\n }\n else if (str.length === 0 && minlength === 0) {\n scope.searching = false;\n showAll();\n }\n\n if (scope.inputChanged) {\n str = scope.inputChanged(str);\n }\n return str;\n };\n\n // check required\n if (scope.fieldRequiredClass && scope.fieldRequiredClass !== '') {\n requiredClassName = scope.fieldRequiredClass;\n }\n\n // check min length\n if (scope.minlength && scope.minlength !== '') {\n minlength = parseInt(scope.minlength, 10);\n }\n\n // check pause time\n if (!scope.pause) {\n scope.pause = PAUSE;\n }\n\n // check clearSelected\n if (!scope.clearSelected) {\n scope.clearSelected = false;\n }\n\n // check override suggestions\n if (!scope.overrideSuggestions) {\n scope.overrideSuggestions = false;\n }\n\n // check required field\n if (scope.fieldRequired && ctrl) {\n // check initial value, if given, set validitity to true\n if (scope.initialValue) {\n handleRequired(true);\n }\n else {\n handleRequired(false);\n }\n }\n\n scope.inputType = attrs.type ? attrs.type : 'text';\n\n // set strings for \"Searching...\" and \"No results\"\n scope.textSearching = attrs.textSearching ? attrs.textSearching : TEXT_SEARCHING;\n scope.textNoResults = attrs.textNoResults ? attrs.textNoResults : TEXT_NORESULTS;\n displaySearching = scope.textSearching === 'false' ? false : true;\n displayNoResults = scope.textNoResults === 'false' ? false : true;\n\n // set max length (default to maxlength deault from html\n scope.maxlength = attrs.maxlength ? attrs.maxlength : MAX_LENGTH;\n\n // register events\n inputField.on('keydown', keydownHandler);\n inputField.on('keyup', keyupHandler);\n\n // set response formatter\n responseFormatter = callFunctionOrIdentity('remoteUrlResponseFormatter');\n\n // set isScrollOn\n $timeout(function() {\n var css = getComputedStyle(dd);\n isScrollOn = css.maxHeight && css.overflowY === 'auto';\n });\n }\n\n return {\n restrict: 'EA',\n require: '^?form',\n scope: {\n selectedObject: '=',\n disableInput: '=',\n disableSuggestions: '=',\n initialValue: '=',\n localData: '=',\n localSearch: '&',\n remoteUrlRequestFormatter: '=',\n remoteUrlRequestWithCredentials: '@',\n remoteUrlResponseFormatter: '=',\n remoteUrlErrorCallback: '=',\n remoteApiHandler: '=',\n id: '@',\n type: '@',\n placeholder: '@',\n remoteUrl: '@',\n remoteUrlDataField: '@',\n titleField: '@',\n descriptionField: '@',\n imageField: '@',\n inputClass: '@',\n pause: '@',\n searchFields: '@',\n minlength: '@',\n matchClass: '@',\n clearSelected: '@',\n overrideSuggestions: '@',\n fieldRequired: '=',\n fieldRequiredClass: '@',\n inputChanged: '=',\n autoMatch: '@',\n focusOut: '&',\n focusIn: '&',\n fieldTabindex: '@',\n inputName: '@',\n focusFirst: '@',\n parseInput: '&'\n },\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || TEMPLATE_URL;\n },\n compile: function(tElement) {\n var startSym = $interpolate.startSymbol();\n var endSym = $interpolate.endSymbol();\n if (!(startSym === '{{' && endSym === '}}')) {\n var interpolatedHtml = tElement.html()\n .replace(/\\{\\{/g, startSym)\n .replace(/\\}\\}/g, endSym);\n tElement.html(interpolatedHtml);\n }\n return link;\n }\n };\n }]);\n\n}));","// This is a rework of the ng-FitText.js which can be found here https://github.com/patrickmarabeas/ng-FitText.js\nangular\n .module('graphdb.framework.core.directives.fittext', [])\n .directive('fitText', fitTextDirective);\n\nfitTextDirective.$inject = ['$timeout'];\n\nfunction fitTextDirective($timeout) {\n return {\n restrict: 'A',\n scope: {\n min: '=',\n max: '='\n },\n link: function (scope, element, attrs) {\n\n const config = {\n 'debounce': _.debounce,\n 'delay': 100,\n 'loadDelay': 10,\n 'compressor': 1,\n 'min': attrs.fitTextMin || 'inherit',\n 'max': attrs.fitTextMax || 'inherit',\n 'calcSize': 10,\n 'lines': 1\n };\n\n const parent = element.parent();\n const domElem = element[0];\n const domElemStyle = domElem.style;\n const computed = window.getComputedStyle(element[0], null);\n const newlines = element.children().length || config.lines;\n const minFontSize = config.min === 'inherit' ? computed['font-size'] : config.min;\n const maxFontSize = config.max === 'inherit' ? computed['font-size'] : config.max;\n const lineHeight = computed['line-height'];\n const display = computed['display'];\n let resizePromise;\n\n function calculate() {\n const ratio = (config.calcSize * newlines) / domElem.offsetWidth / newlines;\n return Math.max(Math.min(getMaxFontSize(ratio), parseFloat(maxFontSize)), parseFloat(minFontSize));\n }\n\n function getMaxFontSize(ratio) {\n const paddingLeft = parseFloat(getComputedStyle(parent[0]).paddingLeft);\n const paddingRight = parseFloat(getComputedStyle(parent[0]).paddingRight);\n\n return (parent[0].offsetWidth - (paddingLeft + paddingRight)) * ratio * config.compressor;\n }\n\n function resize() {\n if (domElem.offsetHeight * domElem.offsetWidth === 0) {\n return;\n }\n\n // Preset standard values for making the size calculation\n domElemStyle.fontSize = config.calcSize + 'px';\n domElemStyle.lineHeight = '1';\n domElemStyle.display = 'inline-block';\n\n // Set usage values\n domElemStyle.fontSize = calculate() + 'px';\n domElemStyle.lineHeight = lineHeight;\n domElemStyle.display = display;\n }\n\n function resizer() {\n if (resizePromise) {\n $timeout.cancel(resizePromise);\n }\n\n resizePromise = $timeout(function () {\n resize();\n }, config.loadDelay);\n }\n\n scope.$watch(function () {\n return [\n parent[0].offsetWidth,\n element[0].offsetWidth\n ].join('_');\n }, function () {\n resizer();\n });\n\n $(window).on('resize', config.debounce(function () {\n scope.$apply(resizer)\n }, config.delay));\n\n scope.$on('$destroy', function () {\n if (resizePromise) {\n $timeout.cancel(resizePromise);\n }\n $(window).off('resize');\n });\n }\n };\n}\n","angular\n .module('graphdb.framework.explore.services', [])\n .factory('StatementsService', StatementsService);\n\nStatementsService.$inject = [];\n\nfunction StatementsService() {\n function transformToTrig(statements) {\n let data = '';\n const contexts = {};\n\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i];\n if (statement.context === undefined) {\n statement.context = '';\n } else {\n statement.context = _.trim(statement.context);\n }\n if (angular.isUndefined(contexts[statement.context])) {\n const cstatement = [];\n cstatement.push(statement);\n contexts[statement.context] = cstatement;\n } else {\n contexts[statement.context].push(statement);\n }\n }\n\n const ckeys = Object.keys(contexts);\n for (let i = 0; i < ckeys.length; i++) {\n const key = ckeys[i];\n if (key === '') {\n data += '\\n{';\n } else {\n data += '\\n<' + key + '> {';\n }\n\n const value = contexts[key];\n for (let j = 0; j < value.length; j++) {\n const statement = value[j];\n data += '\\n\\t<' + statement.subject + '> <' + statement.predicate + '> ';\n if (statement.object.type === 'uri') {\n data += '<' + statement.object.value + '> .';\n } else {\n data += '\"\"\"' + statement.object.value + '\"\"\"' + (statement.object.datatype ? '^^<' + statement.object.datatype + '>' : (statement.object.lang ? '@' + statement.object.lang : '')) + ' .';\n }\n }\n\n data += '\\n}';\n }\n\n return data;\n }\n\n function buildStatements(res, uri) {\n const statements = [];\n if (!_.isEmpty(res.data)) {\n const graph = res.data[uri];\n const predicates = Object.keys(graph);\n for (let i = 0; i < predicates.length; i++) {\n const predicate = predicates[i];\n const objects = graph[predicate];\n for (let j = 0; j < objects.length; j++) {\n const object = objects[j];\n for (let k = 0; k < object.graphs.length; k++) {\n let context = object.graphs[k];\n if (context === 'http://www.ontotext.com/explicit') {\n // Statements in the default context are special\n context = '';\n }\n if (object.lang) {\n object.datatype = '';\n }\n if (!object.datatype) {\n object.datatype = '';\n }\n statements.push({\n subject: uri,\n predicate: predicate,\n object: {\n value: object.value,\n type: object.type,\n datatype: object.datatype,\n lang: object.lang\n },\n context: context\n });\n }\n }\n }\n }\n return statements;\n }\n\n function getDatatypeOptions() {\n return [\n {\n value: '',\n label: 'string'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#boolean',\n label: 'boolean'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#decimal',\n label: 'decimal'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#integer',\n label: 'integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#double',\n label: 'double'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#float',\n label: 'float'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#date',\n label: 'date'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#time',\n label: 'time'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#dateTime',\n label: 'date time'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#byte',\n label: 'byte'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#short',\n label: 'short'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#int',\n label: 'int'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#long',\n label: 'long'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n label: 'unsigned byte'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n label: 'unsigned short'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n label: 'unsigned int'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n label: 'unsigned long'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#positoveInteger',\n label: 'positive integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n label: 'non-negative integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n label: 'negative integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n label: 'non-positive integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gYear',\n label: 'gYear'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gMonth',\n label: 'gMonth'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gDay',\n label: 'gDay'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n label: 'gYearMonth'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n label: 'gMonthDay'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#duration',\n label: 'duration'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#hexBinary',\n label: 'hex binary'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#base64Binary',\n label: 'base64 binary'\n }\n ];\n }\n\n return {\n transformToTrig: transformToTrig,\n buildStatements: buildStatements,\n getDatatypeOptions: getDatatypeOptions\n };\n}\n","import 'angular/utils/uri-utils';\n\nconst exploreDirectives = angular.module('graphdb.framework.explore.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nexploreDirectives.directive('uri', ['UriUtils', function (UriUtils) {\n return {\n require: 'ngModel',\n link: function (scope, elem, attr, ngModel) {\n\n //For DOM -> model validation\n ngModel.$parsers.unshift(function (value) {\n if (!angular.isUndefined(value) && value.length > 0) {\n const isValidUri = UriUtils.validateRdfUri(value);\n ngModel.$setValidity('searchStr', isValidUri);\n return isValidUri ? value : undefined;\n } else {\n ngModel.$setValidity('searchStr', true);\n return value;\n }\n });\n\n //For model -> DOM validation\n ngModel.$formatters.unshift(function (value) {\n if (!angular.isUndefined(value)) {\n ngModel.$setValidity('searchStr', UriUtils.validateRdfUri);\n }\n return value;\n });\n }\n };\n}]);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/explore/app.js","webpack:///./src/js/lib/angucomplete-alt/angucomplete-alt-onto.min.js","webpack:///./src/js/angular/core/directives/fit-text.directive.js","webpack:///./src/js/angular/explore/statements.service.js","webpack:///./src/js/angular/explore/directives.js"],"names":["angular","module","root","factory","directive","$q","$parse","$http","$sce","$timeout","$templateCache","$interpolate","$rootScope","link","scope","elem","attrs","ctrl","hideTimer","responseFormatter","unbindInitialValue","displaySearching","displayNoResults","fn","inputField","find","minlength","searchTimer","requiredClassName","validState","httpCanceller","dd","querySelector","isScrollOn","mousedownOn","handleInputChange","newval","initial","uri","extractTitle","callOrAssign","originalObject","length","console","error","handleRequired","clickoutHandlerForDropdown","event","hideResults","document","body","removeEventListener","ie8EventNormalizer","which","keyCode","value","selectedObject","data","titleField","split","map","field","extractValue","join","obj","key","keys","result","i","findMatchString","target","str","matches","re","RegExp","replace","match","toString","matchClass","trustAsHtml","valid","notEmpty","fieldRequired","inputName","$setValidity","handleOverrideSuggestions","overrideSuggestions","preventDefault","cancel","cancelHttpRequest","clearSelected","clearResults","dropdownRow","querySelectorAll","currentIndex","dropdownScrollTopTo","offset","scrollTop","updateInputField","current","results","extractedTitle","val","title","httpSuccessCallbackGen","responseData","status","headers","config","searching","processResults","remoteUrlDataField","httpErrorCallback","errorRes","remoteUrlErrorCallback","resolve","getRemoteResults","params","url","remoteUrl","encodeuriComponent","remoteUrlRequestFormatter","remoteUrlRequestWithCredentials","withCredentials","defer","timeout","promise","get","success","getRemoteResultsWithCustomHandler","remoteApiHandler","then","catch","showDropdown","initResults","focusFirst","searchTimerComplete","localData","$apply","localSearch","s","searchFields","parseInput","toLowerCase","indexOf","getLocalResults","description","image","text","formattedText","formattedDesc","descriptionField","imageField","autoMatch","selectResult","checkExactMatch","desc","showAll","on","id","addEventListener","className","$watch","oldval","$on","elementId","onFocusHandler","focusIn","focusOut","resetHideResults","hoverRow","index","inputChangeHandler","inputChanged","fieldRequiredClass","parseInt","pause","initialValue","inputType","type","textSearching","textNoResults","maxlength","row","rowTop","getBoundingClientRect","top","getComputedStyle","maxHeight","bottom","css","offsetHeight","marginTop","marginBottom","dropdownRowOffsetHeight","paddingTop","$digest","overflowY","put","restrict","require","disableInput","disableSuggestions","remoteUrlResponseFormatter","placeholder","inputClass","fieldTabindex","templateUrl","element","compile","tElement","startSym","startSymbol","endSym","endSymbol","interpolatedHtml","html","window","fitTextDirective","min","max","_","debounce","fitTextMin","fitTextMax","parent","domElem","domElemStyle","style","computed","newlines","children","lines","minFontSize","maxFontSize","lineHeight","display","resizePromise","calculate","ratio","calcSize","offsetWidth","Math","paddingLeft","parseFloat","paddingRight","compressor","getMaxFontSize","resizer","fontSize","loadDelay","$","delay","off","$inject","StatementsService","transformToTrig","statements","contexts","statement","undefined","context","trim","isUndefined","cstatement","push","ckeys","Object","j","subject","predicate","object","datatype","lang","buildStatements","res","isEmpty","graph","predicates","objects","k","graphs","getDatatypeOptions","label","UriUtils","attr","ngModel","$parsers","unshift","isValidUri","validateRdfUri","$formatters"],"mappings":"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","file":"19.34c180252e48207f01b4.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/explore/statements.service';\nimport 'angular/explore/controllers';\nimport 'angular/explore/directives';\nimport 'angular-xeditable/dist/js/xeditable.min';\nimport 'lib/angucomplete-alt/angucomplete-alt-onto.min';\nimport 'angular/core/directives/fit-text.directive';\n\nconst modules = [\n 'ngRoute',\n 'toastr',\n 'xeditable',\n 'angucomplete-alt-onto',\n 'graphdb.framework.explore.services',\n 'graphdb.framework.explore.controllers',\n 'graphdb.framework.explore.directives',\n 'graphdb.framework.core.directives.fittext'\n];\n\nangular.module('graphdb.framework.explore', modules);\n","/*\n * angucomplete-alt\n * Autocomplete directive for AngularJS\n * This is a fork of Daryl Rowland's angucomplete with some extra features.\n * By Hidenari Nozaki\n */\n\n/*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */\n\n(function (root, factory) {\n 'use strict';\n// if (typeof module !== 'undefined' && module.exports) {\n// // CommonJS\n// module.exports = factory(require('angular'));\n// } else if (typeof define === 'function' && define.amd) {\n// // AMD\n// define(['angular'], factory);\n// } else {\n// // Global Variables\n factory(root.angular);\n// }\n}(window, function (angular) {\n 'use strict';\n\n angular.module('angucomplete-alt-onto', []).directive('angucompleteAltOnto', ['$q', '$parse', '$http', '$sce', '$timeout', '$templateCache', '$interpolate', '$rootScope', function ($q, $parse, $http, $sce, $timeout, $templateCache, $interpolate, $rootScope) {\n // keyboard events\n var KEY_DW = 40;\n var KEY_RT = 39;\n var KEY_UP = 38;\n var KEY_LF = 37;\n var KEY_ES = 27;\n var KEY_EN = 13;\n var KEY_TAB = 9;\n\n var MIN_LENGTH = 3;\n var MAX_LENGTH = 524288; // the default max length per the html maxlength attribute\n var PAUSE = 500;\n var BLUR_TIMEOUT = 200;\n\n // string constants\n var REQUIRED_CLASS = 'autocomplete-required';\n var TEXT_SEARCHING = 'Searching...';\n var TEXT_NORESULTS = 'No results found';\n var TEMPLATE_URL = '/angucomplete-alt/index.html';\n\n // Set the default template for this directive\n $templateCache.put(TEMPLATE_URL,\n '<div class=\"angucomplete-holder\" ng-class=\"{\\'angucomplete-dropdown-visible\\': showDropdown}\">' +\n ' <input id=\"{{id}}_value\" name=\"{{inputName}}\" tabindex=\"{{fieldTabindex}}\" ng-class=\"{\\'angucomplete-input-not-empty\\': notEmpty}\" ng-model=\"uri\" ng-disabled=\"disableInput\" type=\"{{inputType}}\" placeholder=\"{{placeholder}}\" maxlength=\"{{maxlength}}\" ng-focus=\"onFocusHandler()\" class=\"{{inputClass}}\" ng-focus=\"resetHideResults()\" ng-blur=\"hideResults($event)\" autocapitalize=\"off\" autocorrect=\"off\" autocomplete=\"off\" ng-change=\"inputChangeHandler(uri)\" style=\"overflow: hidden; padding-right: .5em;\"/>' +\n ' <div id=\"{{id}}_dropdown\" class=\"angucomplete-dropdown\" ng-show=\"disableSuggestions && showDropdown\">' +\n ' <div class=\"angucomplete-searching\" ng-show=\"searching\" ng-bind=\"textSearching\"></div>' +\n ' <div class=\"angucomplete-searching\" ng-show=\"!searching && (!results || results.length == 0)\" ng-bind=\"textNoResults\"></div>' +\n ' <div class=\"angucomplete-row\" ng-repeat=\"result in results\" ng-click=\"selectResult(result)\" ng-mouseenter=\"hoverRow($index)\" ng-class=\"{\\'angucomplete-selected-row\\': $index == currentIndex}\">' +\n ' <div ng-if=\"imageField\" class=\"angucomplete-image-holder\">' +\n ' <img ng-if=\"result.image && result.image != \\'\\'\" ng-src=\"{{result.image}}\" class=\"angucomplete-image\"/>' +\n ' <div ng-if=\"!result.image && result.image != \\'\\'\" class=\"angucomplete-image-default\"></div>' +\n ' </div>' +\n ' <div class=\"angucomplete-title\" ng-if=\"matchClass\" ng-bind-html=\"result.title\"></div>' +\n ' <div class=\"angucomplete-title\" ng-if=\"!matchClass\">{{ result.title }}</div>' +\n ' <div ng-if=\"matchClass && result.description && result.description != \\'\\'\" class=\"angucomplete-description\" ng-bind-html=\"result.description\"></div>' +\n ' <div ng-if=\"!matchClass && result.description && result.description != \\'\\'\" class=\"angucomplete-description\">{{result.description}}</div>' +\n ' </div>' +\n ' </div>' +\n '</div>'\n );\n\n function link(scope, elem, attrs, ctrl) {\n var inputField = elem.find('input');\n var minlength = MIN_LENGTH;\n var searchTimer = null;\n var hideTimer;\n var requiredClassName = REQUIRED_CLASS;\n var responseFormatter;\n var validState = null;\n var httpCanceller = null;\n var dd = elem[0].querySelector('.angucomplete-dropdown');\n var isScrollOn = false;\n var mousedownOn = null;\n var unbindInitialValue;\n var displaySearching;\n var displayNoResults;\n\n\n elem.on('mousedown', function(event) {\n if (event.target.id) {\n mousedownOn = event.target.id;\n if (mousedownOn === scope.id + '_dropdown') {\n document.body.addEventListener('click', clickoutHandlerForDropdown);\n }\n }\n else {\n mousedownOn = event.target.className;\n }\n });\n\n scope.currentIndex = scope.focusFirst ? 0 : null;\n scope.searching = false;\n unbindInitialValue = scope.$watch('initialValue', function(newval) {\n if (newval) {\n // remove scope listener\n unbindInitialValue();\n // change input\n handleInputChange(newval, true);\n }\n });\n\n scope.$watch('fieldRequired', function(newval, oldval) {\n if (newval !== oldval) {\n if (!newval) {\n ctrl[scope.inputName].$setValidity(requiredClassName, true);\n }\n else if (!validState || scope.currentIndex === -1) {\n handleRequired(false);\n }\n else {\n handleRequired(true);\n }\n }\n });\n\n scope.$on('angucomplete-alt:clearInput', function (event, elementId) {\n if (!elementId || elementId === scope.id) {\n scope.uri = null;\n callOrAssign();\n handleRequired(false);\n clearResults();\n }\n });\n\n scope.$on('angucomplete-alt:changeInput', function (event, elementId, newval) {\n if (!!elementId && elementId === scope.id) {\n handleInputChange(newval);\n }\n });\n\n function handleInputChange(newval, initial) {\n if (newval) {\n if (typeof newval === 'object') {\n scope.uri = extractTitle(newval);\n callOrAssign({originalObject: newval});\n } else if (typeof newval === 'string' && newval.length > 0) {\n scope.uri = newval;\n } else {\n if (console && console.error) {\n console.error('Tried to set ' + (!!initial ? 'initial' : '') + ' value of angucomplete to', newval, 'which is an invalid value');\n }\n }\n\n handleRequired(true);\n }\n }\n\n // #194 dropdown list not consistent in collapsing (bug).\n function clickoutHandlerForDropdown(event) {\n mousedownOn = null;\n scope.hideResults(event);\n document.body.removeEventListener('click', clickoutHandlerForDropdown);\n }\n\n // for IE8 quirkiness about event.which\n function ie8EventNormalizer(event) {\n return event.which ? event.which : event.keyCode;\n }\n\n function callOrAssign(value) {\n if (typeof scope.selectedObject === 'function') {\n scope.selectedObject(value);\n }\n else {\n scope.selectedObject = value;\n }\n\n if (value) {\n handleRequired(true);\n }\n else {\n handleRequired(false);\n }\n }\n\n function callFunctionOrIdentity(fn) {\n return function(data) {\n return scope[fn] ? scope[fn](data) : data;\n };\n }\n\n function setInputString(str) {\n callOrAssign({originalObject: str});\n\n if (scope.clearSelected) {\n scope.uri = null;\n }\n clearResults();\n }\n\n function extractTitle(data) {\n // split title fields and run extractValue for each and join with ' '\n return scope.titleField.split(',')\n .map(function(field) {\n return extractValue(data, field);\n })\n .join(' ');\n }\n\n function extractValue(obj, key) {\n var keys, result;\n if (key) {\n keys= key.split('.');\n result = obj;\n for (var i = 0; i < keys.length; i++) {\n result = result[keys[i]];\n }\n }\n else {\n result = obj;\n }\n\n return result;\n }\n\n function findMatchString(target, str) {\n var result, matches, re;\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n // Escape user input to be treated as a literal string within a regular expression\n re = new RegExp(str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i');\n if (!target) { return; }\n if (!target.match || !target.replace) { target = target.toString(); }\n matches = target.match(re);\n if (matches) {\n result = target.replace(re,\n '<span class=\"'+ scope.matchClass +'\">'+ matches[0] +'</span>');\n }\n else {\n result = target;\n }\n return $sce.trustAsHtml(result);\n }\n\n function handleRequired(valid) {\n scope.notEmpty = valid;\n validState = scope.uri;\n if (scope.fieldRequired && ctrl && scope.inputName) {\n ctrl[scope.inputName].$setValidity(requiredClassName, valid);\n }\n }\n\n function keyupHandler(event) {\n var which = ie8EventNormalizer(event);\n if (which === KEY_LF || which === KEY_RT) {\n // do nothing\n return;\n }\n\n if (which === KEY_UP || which === KEY_EN) {\n event.preventDefault();\n }\n else if (which === KEY_DW) {\n event.preventDefault();\n if (!scope.showDropdown && scope.uri && scope.uri.length >= minlength) {\n initResults();\n scope.searching = true;\n searchTimerComplete(scope.uri);\n }\n }\n else if (which === KEY_ES) {\n clearResults();\n scope.$apply(function() {\n inputField.val(scope.uri);\n });\n }\n else {\n if (minlength === 0 && !scope.uri) {\n return;\n }\n\n if (!scope.uri || scope.uri === '') {\n scope.showDropdown = false;\n } else if (scope.uri.length >= minlength) {\n initResults();\n\n if (searchTimer) {\n $timeout.cancel(searchTimer);\n }\n\n scope.searching = true;\n\n searchTimer = $timeout(function() {\n searchTimerComplete(scope.uri);\n }, scope.pause);\n }\n\n if (validState && validState !== scope.uri && !scope.clearSelected) {\n scope.$apply(function() {\n callOrAssign();\n });\n }\n }\n }\n\n function handleOverrideSuggestions(event) {\n if (scope.overrideSuggestions &&\n !(scope.selectedObject && scope.selectedObject.originalObject === scope.uri)) {\n if (event) {\n event.preventDefault();\n }\n\n // cancel search timer\n $timeout.cancel(searchTimer);\n // cancel http request\n cancelHttpRequest();\n\n setInputString(scope.uri);\n }\n }\n\n function dropdownRowOffsetHeight(row) {\n var css = getComputedStyle(row);\n return row.offsetHeight +\n parseInt(css.marginTop, 10) + parseInt(css.marginBottom, 10);\n }\n\n function dropdownHeight() {\n return dd.getBoundingClientRect().top +\n parseInt(getComputedStyle(dd).maxHeight, 10);\n }\n\n function dropdownRow() {\n return elem[0].querySelectorAll('.angucomplete-row')[scope.currentIndex];\n }\n\n function dropdownRowTop() {\n return dropdownRow().getBoundingClientRect().top -\n (dd.getBoundingClientRect().top +\n parseInt(getComputedStyle(dd).paddingTop, 10));\n }\n\n function dropdownScrollTopTo(offset) {\n dd.scrollTop = dd.scrollTop + offset;\n }\n\n function updateInputField(){\n var current = scope.results[scope.currentIndex];\n if (scope.matchClass) {\n var extractedTitle = extractTitle(current.originalObject);\n extractedTitle = extractedTitle.replace(/<b>|<\\/b>/g, \"\");\n inputField.val(extractedTitle);\n }\n else {\n inputField.val(current.title);\n }\n }\n\n function keydownHandler(event) {\n var which = ie8EventNormalizer(event);\n var row = null;\n var rowTop = null;\n\n if (which === KEY_EN && scope.results) {\n if (scope.currentIndex >= 0 && scope.currentIndex < scope.results.length) {\n event.preventDefault();\n scope.selectResult(scope.results[scope.currentIndex]);\n } else {\n handleOverrideSuggestions(event);\n clearResults();\n }\n scope.$apply();\n } else if (which === KEY_DW && scope.results) {\n event.preventDefault();\n if ((scope.currentIndex + 1) < scope.results.length && scope.showDropdown) {\n scope.$apply(function() {\n scope.currentIndex ++;\n updateInputField();\n });\n\n if (isScrollOn) {\n row = dropdownRow();\n if (dropdownHeight() < row.getBoundingClientRect().bottom) {\n dropdownScrollTopTo(dropdownRowOffsetHeight(row));\n }\n }\n }\n } else if (which === KEY_UP && scope.results) {\n event.preventDefault();\n if (scope.currentIndex >= 1) {\n scope.$apply(function() {\n scope.currentIndex --;\n updateInputField();\n });\n\n if (isScrollOn) {\n rowTop = dropdownRowTop();\n if (rowTop < 0) {\n dropdownScrollTopTo(rowTop - 1);\n }\n }\n }\n else if (scope.currentIndex === 0) {\n scope.$apply(function() {\n scope.currentIndex = -1;\n inputField.val(scope.uri);\n });\n }\n } else if (which === KEY_TAB) {\n if (scope.results && scope.results.length > 0 && scope.showDropdown) {\n if (scope.currentIndex === -1 && scope.overrideSuggestions) {\n // intentionally not sending event so that it does not\n // prevent default tab behavior\n handleOverrideSuggestions();\n }\n else {\n if (scope.currentIndex === -1) {\n scope.currentIndex = 0;\n }\n scope.selectResult(scope.results[scope.currentIndex]);\n scope.$digest();\n }\n }\n else {\n // no results\n // intentionally not sending event so that it does not\n // prevent default tab behavior\n if (scope.uri && scope.uri.length > 0) {\n handleOverrideSuggestions();\n }\n }\n } else if (which === KEY_ES) {\n // This is very specific to IE10/11 #272\n // without this, IE clears the input text\n event.preventDefault();\n }\n }\n\n function httpSuccessCallbackGen(str) {\n return function(responseData, status, headers, config) {\n // normalize return obejct from promise\n if (!status && !headers && !config && responseData.data) {\n responseData = responseData.data;\n }\n scope.searching = false;\n processResults(extractValue(responseFormatter(responseData), scope.remoteUrlDataField), str);\n };\n }\n\n function httpErrorCallback(errorRes, status, headers, config) {\n // cancelled/aborted\n if (status === 0 || status === -1) { return; }\n\n // normalize return obejct from promise\n if (!status && !headers && !config) {\n status = errorRes.status;\n }\n if (scope.remoteUrlErrorCallback) {\n scope.remoteUrlErrorCallback(errorRes, status, headers, config);\n }\n else {\n if (console && console.error) {\n console.error('http error');\n }\n }\n }\n\n function cancelHttpRequest() {\n if (httpCanceller) {\n httpCanceller.resolve();\n }\n }\n\n function getRemoteResults(str) {\n var params = {},\n url = scope.remoteUrl + encodeuriComponent(str);\n if (scope.remoteUrlRequestFormatter) {\n params = {params: scope.remoteUrlRequestFormatter(str)};\n url = scope.remoteUrl;\n }\n if (!!scope.remoteUrlRequestWithCredentials) {\n params.withCredentials = true;\n }\n cancelHttpRequest();\n httpCanceller = $q.defer();\n params.timeout = httpCanceller.promise;\n $http.get(url, params)\n .success(httpSuccessCallbackGen(str))\n .error(httpErrorCallback);\n }\n\n function getRemoteResultsWithCustomHandler(str) {\n cancelHttpRequest();\n\n httpCanceller = $q.defer();\n\n scope.remoteApiHandler(str, httpCanceller.promise)\n .then(httpSuccessCallbackGen(str))\n .catch(httpErrorCallback);\n\n /* IE8 compatible\n scope.remoteApiHandler(str, httpCanceller.promise)\n ['then'](httpSuccessCallbackGen(str))\n ['catch'](httpErrorCallback);\n */\n }\n\n function clearResults() {\n scope.showDropdown = false;\n scope.results = [];\n if (dd) {\n dd.scrollTop = 0;\n }\n }\n\n function initResults() {\n scope.showDropdown = displaySearching;\n scope.currentIndex = scope.focusFirst ? 0 : -1;\n scope.results = [];\n }\n\n function getLocalResults(str) {\n var i, match, s, value,\n searchFields = scope.searchFields.split(','),\n matches = [];\n if (typeof scope.parseInput() !== 'undefined') {\n str = scope.parseInput()(str);\n }\n for (i = 0; i < scope.localData.length; i++) {\n match = false;\n\n for (s = 0; s < searchFields.length; s++) {\n value = extractValue(scope.localData[i], searchFields[s]) || '';\n match = match || (value.toString().toLowerCase().indexOf(str.toString().toLowerCase()) >= 0);\n }\n\n if (match) {\n matches[matches.length] = scope.localData[i];\n }\n }\n return matches;\n }\n\n function checkExactMatch(result, obj, str){\n if (!str) { return false; }\n for(var key in obj){\n if(obj[key].toLowerCase() === str.toLowerCase()){\n scope.selectResult(result);\n return true;\n }\n }\n return false;\n }\n\n function searchTimerComplete(str) {\n // Begin the search\n if (!str || str.length < minlength) {\n return;\n }\n if (scope.localData) {\n scope.$apply(function() {\n var matches;\n if (typeof scope.localSearch() !== 'undefined') {\n matches = scope.localSearch()(str);\n } else {\n matches = getLocalResults(str);\n }\n scope.searching = false;\n processResults(matches, str);\n });\n }\n else if (scope.remoteApiHandler) {\n getRemoteResultsWithCustomHandler(str);\n } else {\n getRemoteResults(str);\n }\n }\n\n function processResults(responseData, str) {\n var i, description, image, text, formattedText, formattedDesc;\n\n if (responseData && responseData.length > 0) {\n scope.results = [];\n\n for (i = 0; i < responseData.length; i++) {\n if (scope.titleField && scope.titleField !== '') {\n text = formattedText = extractTitle(responseData[i]);\n }\n\n description = '';\n if (scope.descriptionField) {\n description = formattedDesc = extractValue(responseData[i], scope.descriptionField);\n }\n\n image = '';\n if (scope.imageField) {\n image = extractValue(responseData[i], scope.imageField);\n }\n\n if (scope.matchClass) {\n formattedText = findMatchString(text, str);\n formattedDesc = findMatchString(description, str);\n }\n\n scope.results[scope.results.length] = {\n title: formattedText,\n description: formattedDesc,\n image: image,\n originalObject: responseData[i]\n };\n }\n\n } else {\n scope.results = [];\n }\n\n if (scope.autoMatch && scope.results.length === 1 &&\n checkExactMatch(scope.results[0],\n {title: text, desc: description || ''}, scope.uri)) {\n scope.showDropdown = false;\n } else if (scope.results.length === 0 && !displayNoResults) {\n scope.showDropdown = false;\n } else {\n scope.showDropdown = true;\n }\n }\n\n function showAll() {\n if (scope.localData) {\n processResults(scope.localData, '');\n }\n else if (scope.remoteApiHandler) {\n getRemoteResultsWithCustomHandler('');\n }\n else {\n getRemoteResults('');\n }\n }\n\n scope.onFocusHandler = function() {\n if (scope.focusIn) {\n scope.focusIn();\n }\n if (minlength === 0 && (!scope.uri || scope.uri.length === 0)) {\n scope.currentIndex = scope.focusFirst ? 0 : scope.currentIndex;\n scope.showDropdown = true;\n showAll();\n }\n };\n\n scope.hideResults = function() {\n if (mousedownOn &&\n (mousedownOn === scope.id + '_dropdown' ||\n mousedownOn.indexOf('angucomplete') >= 0)) {\n mousedownOn = null;\n }\n else {\n hideTimer = $timeout(function() {\n clearResults();\n scope.$apply(function() {\n if (scope.uri && scope.uri.length > 0) {\n inputField.val(scope.uri);\n }\n });\n }, BLUR_TIMEOUT);\n cancelHttpRequest();\n\n if (scope.focusOut) {\n scope.focusOut();\n }\n\n if (scope.overrideSuggestions) {\n if (scope.uri && scope.uri.length > 0 && scope.currentIndex === -1) {\n handleOverrideSuggestions();\n }\n }\n }\n };\n\n scope.resetHideResults = function() {\n if (hideTimer) {\n $timeout.cancel(hideTimer);\n }\n };\n\n scope.hoverRow = function(index) {\n scope.currentIndex = index;\n };\n\n scope.selectResult = function(result) {\n // Restore original values\n if (scope.matchClass) {\n result.title = extractTitle(result.originalObject);\n if (typeof result.title === \"string\") {\n result.title = result.title.replace(/<b>|<\\/b>/g, \"\");\n }\n result.description = extractValue(result.originalObject, scope.descriptionField);\n }\n\n if (scope.clearSelected) {\n scope.uri = null;\n }\n else {\n scope.uri = result.title;\n }\n callOrAssign(result);\n clearResults();\n };\n\n scope.inputChangeHandler = function(str) {\n if (str.length < minlength) {\n cancelHttpRequest();\n clearResults();\n }\n else if (str.length === 0 && minlength === 0) {\n scope.searching = false;\n showAll();\n }\n\n if (scope.inputChanged) {\n str = scope.inputChanged(str);\n }\n return str;\n };\n\n // check required\n if (scope.fieldRequiredClass && scope.fieldRequiredClass !== '') {\n requiredClassName = scope.fieldRequiredClass;\n }\n\n // check min length\n if (scope.minlength && scope.minlength !== '') {\n minlength = parseInt(scope.minlength, 10);\n }\n\n // check pause time\n if (!scope.pause) {\n scope.pause = PAUSE;\n }\n\n // check clearSelected\n if (!scope.clearSelected) {\n scope.clearSelected = false;\n }\n\n // check override suggestions\n if (!scope.overrideSuggestions) {\n scope.overrideSuggestions = false;\n }\n\n // check required field\n if (scope.fieldRequired && ctrl) {\n // check initial value, if given, set validitity to true\n if (scope.initialValue) {\n handleRequired(true);\n }\n else {\n handleRequired(false);\n }\n }\n\n scope.inputType = attrs.type ? attrs.type : 'text';\n\n // set strings for \"Searching...\" and \"No results\"\n scope.textSearching = attrs.textSearching ? attrs.textSearching : TEXT_SEARCHING;\n scope.textNoResults = attrs.textNoResults ? attrs.textNoResults : TEXT_NORESULTS;\n displaySearching = scope.textSearching === 'false' ? false : true;\n displayNoResults = scope.textNoResults === 'false' ? false : true;\n\n // set max length (default to maxlength deault from html\n scope.maxlength = attrs.maxlength ? attrs.maxlength : MAX_LENGTH;\n\n // register events\n inputField.on('keydown', keydownHandler);\n inputField.on('keyup', keyupHandler);\n\n // set response formatter\n responseFormatter = callFunctionOrIdentity('remoteUrlResponseFormatter');\n\n // set isScrollOn\n $timeout(function() {\n var css = getComputedStyle(dd);\n isScrollOn = css.maxHeight && css.overflowY === 'auto';\n });\n }\n\n return {\n restrict: 'EA',\n require: '^?form',\n scope: {\n selectedObject: '=',\n disableInput: '=',\n disableSuggestions: '=',\n initialValue: '=',\n localData: '=',\n localSearch: '&',\n remoteUrlRequestFormatter: '=',\n remoteUrlRequestWithCredentials: '@',\n remoteUrlResponseFormatter: '=',\n remoteUrlErrorCallback: '=',\n remoteApiHandler: '=',\n id: '@',\n type: '@',\n placeholder: '@',\n remoteUrl: '@',\n remoteUrlDataField: '@',\n titleField: '@',\n descriptionField: '@',\n imageField: '@',\n inputClass: '@',\n pause: '@',\n searchFields: '@',\n minlength: '@',\n matchClass: '@',\n clearSelected: '@',\n overrideSuggestions: '@',\n fieldRequired: '=',\n fieldRequiredClass: '@',\n inputChanged: '=',\n autoMatch: '@',\n focusOut: '&',\n focusIn: '&',\n fieldTabindex: '@',\n inputName: '@',\n focusFirst: '@',\n parseInput: '&'\n },\n templateUrl: function(element, attrs) {\n return attrs.templateUrl || TEMPLATE_URL;\n },\n compile: function(tElement) {\n var startSym = $interpolate.startSymbol();\n var endSym = $interpolate.endSymbol();\n if (!(startSym === '{{' && endSym === '}}')) {\n var interpolatedHtml = tElement.html()\n .replace(/\\{\\{/g, startSym)\n .replace(/\\}\\}/g, endSym);\n tElement.html(interpolatedHtml);\n }\n return link;\n }\n };\n }]);\n\n}));","// This is a rework of the ng-FitText.js which can be found here https://github.com/patrickmarabeas/ng-FitText.js\nangular\n .module('graphdb.framework.core.directives.fittext', [])\n .directive('fitText', fitTextDirective);\n\nfitTextDirective.$inject = ['$timeout'];\n\nfunction fitTextDirective($timeout) {\n return {\n restrict: 'A',\n scope: {\n min: '=',\n max: '='\n },\n link: function (scope, element, attrs) {\n\n const config = {\n 'debounce': _.debounce,\n 'delay': 100,\n 'loadDelay': 10,\n 'compressor': 1,\n 'min': attrs.fitTextMin || 'inherit',\n 'max': attrs.fitTextMax || 'inherit',\n 'calcSize': 10,\n 'lines': 1\n };\n\n const parent = element.parent();\n const domElem = element[0];\n const domElemStyle = domElem.style;\n const computed = window.getComputedStyle(element[0], null);\n const newlines = element.children().length || config.lines;\n const minFontSize = config.min === 'inherit' ? computed['font-size'] : config.min;\n const maxFontSize = config.max === 'inherit' ? computed['font-size'] : config.max;\n const lineHeight = computed['line-height'];\n const display = computed['display'];\n let resizePromise;\n\n function calculate() {\n const ratio = (config.calcSize * newlines) / domElem.offsetWidth / newlines;\n return Math.max(Math.min(getMaxFontSize(ratio), parseFloat(maxFontSize)), parseFloat(minFontSize));\n }\n\n function getMaxFontSize(ratio) {\n const paddingLeft = parseFloat(getComputedStyle(parent[0]).paddingLeft);\n const paddingRight = parseFloat(getComputedStyle(parent[0]).paddingRight);\n\n return (parent[0].offsetWidth - (paddingLeft + paddingRight)) * ratio * config.compressor;\n }\n\n function resize() {\n if (domElem.offsetHeight * domElem.offsetWidth === 0) {\n return;\n }\n\n // Preset standard values for making the size calculation\n domElemStyle.fontSize = config.calcSize + 'px';\n domElemStyle.lineHeight = '1';\n domElemStyle.display = 'inline-block';\n\n // Set usage values\n domElemStyle.fontSize = calculate() + 'px';\n domElemStyle.lineHeight = lineHeight;\n domElemStyle.display = display;\n }\n\n function resizer() {\n if (resizePromise) {\n $timeout.cancel(resizePromise);\n }\n\n resizePromise = $timeout(function () {\n resize();\n }, config.loadDelay);\n }\n\n scope.$watch(function () {\n return [\n parent[0].offsetWidth,\n element[0].offsetWidth\n ].join('_');\n }, function () {\n resizer();\n });\n\n $(window).on('resize', config.debounce(function () {\n scope.$apply(resizer)\n }, config.delay));\n\n scope.$on('$destroy', function () {\n if (resizePromise) {\n $timeout.cancel(resizePromise);\n }\n $(window).off('resize');\n });\n }\n };\n}\n","angular\n .module('graphdb.framework.explore.services', [])\n .factory('StatementsService', StatementsService);\n\nStatementsService.$inject = [];\n\nfunction StatementsService() {\n function transformToTrig(statements) {\n let data = '';\n const contexts = {};\n\n for (let i = 0; i < statements.length; i++) {\n const statement = statements[i];\n if (statement.context === undefined) {\n statement.context = '';\n } else {\n statement.context = _.trim(statement.context);\n }\n if (angular.isUndefined(contexts[statement.context])) {\n const cstatement = [];\n cstatement.push(statement);\n contexts[statement.context] = cstatement;\n } else {\n contexts[statement.context].push(statement);\n }\n }\n\n const ckeys = Object.keys(contexts);\n for (let i = 0; i < ckeys.length; i++) {\n const key = ckeys[i];\n if (key === '') {\n data += '\\n{';\n } else {\n data += '\\n<' + key + '> {';\n }\n\n const value = contexts[key];\n for (let j = 0; j < value.length; j++) {\n const statement = value[j];\n data += '\\n\\t<' + statement.subject + '> <' + statement.predicate + '> ';\n if (statement.object.type === 'uri') {\n data += '<' + statement.object.value + '> .';\n } else {\n data += '\"\"\"' + statement.object.value + '\"\"\"' + (statement.object.datatype ? '^^<' + statement.object.datatype + '>' : (statement.object.lang ? '@' + statement.object.lang : '')) + ' .';\n }\n }\n\n data += '\\n}';\n }\n\n return data;\n }\n\n function buildStatements(res, uri) {\n const statements = [];\n if (!_.isEmpty(res.data)) {\n const graph = res.data[uri];\n const predicates = Object.keys(graph);\n for (let i = 0; i < predicates.length; i++) {\n const predicate = predicates[i];\n const objects = graph[predicate];\n for (let j = 0; j < objects.length; j++) {\n const object = objects[j];\n for (let k = 0; k < object.graphs.length; k++) {\n let context = object.graphs[k];\n if (context === 'http://www.ontotext.com/explicit') {\n // Statements in the default context are special\n context = '';\n }\n if (object.lang) {\n object.datatype = '';\n }\n if (!object.datatype) {\n object.datatype = '';\n }\n statements.push({\n subject: uri,\n predicate: predicate,\n object: {\n value: object.value,\n type: object.type,\n datatype: object.datatype,\n lang: object.lang\n },\n context: context\n });\n }\n }\n }\n }\n return statements;\n }\n\n function getDatatypeOptions() {\n return [\n {\n value: '',\n label: 'string'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#boolean',\n label: 'boolean'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#decimal',\n label: 'decimal'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#integer',\n label: 'integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#double',\n label: 'double'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#float',\n label: 'float'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#date',\n label: 'date'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#time',\n label: 'time'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#dateTime',\n label: 'date time'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#byte',\n label: 'byte'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#short',\n label: 'short'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#int',\n label: 'int'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#long',\n label: 'long'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n label: 'unsigned byte'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n label: 'unsigned short'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n label: 'unsigned int'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n label: 'unsigned long'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#positoveInteger',\n label: 'positive integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n label: 'non-negative integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n label: 'negative integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n label: 'non-positive integer'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gYear',\n label: 'gYear'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gMonth',\n label: 'gMonth'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gDay',\n label: 'gDay'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n label: 'gYearMonth'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n label: 'gMonthDay'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#duration',\n label: 'duration'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#hexBinary',\n label: 'hex binary'\n }, {\n value: 'http://www.w3.org/2001/XMLSchema#base64Binary',\n label: 'base64 binary'\n }\n ];\n }\n\n return {\n transformToTrig: transformToTrig,\n buildStatements: buildStatements,\n getDatatypeOptions: getDatatypeOptions\n };\n}\n","import 'angular/utils/uri-utils';\n\nconst exploreDirectives = angular.module('graphdb.framework.explore.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nexploreDirectives.directive('uri', ['UriUtils', function (UriUtils) {\n return {\n require: 'ngModel',\n link: function (scope, elem, attr, ngModel) {\n\n //For DOM -> model validation\n ngModel.$parsers.unshift(function (value) {\n if (!angular.isUndefined(value) && value.length > 0) {\n const isValidUri = UriUtils.validateRdfUri(value);\n ngModel.$setValidity('searchStr', isValidUri);\n return isValidUri ? value : undefined;\n } else {\n ngModel.$setValidity('searchStr', true);\n return value;\n }\n });\n\n //For model -> DOM validation\n ngModel.$formatters.unshift(function (value) {\n if (!angular.isUndefined(value)) {\n ngModel.$setValidity('searchStr', UriUtils.validateRdfUri);\n }\n return value;\n });\n }\n };\n}]);\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[20],{255:function(e,t,n){var r,i,a;i=[],void 0===(a="function"==typeof(r=function(){return function(){var e=function(){return"n"},t=function(){return[0,0]},n=function(){return" "},r=u(),i=null,a=null,o=null,s=null;function l(e){var t;i="svg"===(t=(t=e).node()).tagName.toLowerCase()?t:t.ownerSVGElement,a=i.createSVGPoint(),document.body.appendChild(r)}l.show=function(){var r=Array.prototype.slice.call(arguments);r[r.length-1]instanceof SVGElement&&(o=r.pop());var i,a=n.apply(this,r),u=t.apply(this,r),h=e.apply(this,r),p=f(),v=d.length,y=document.documentElement.scrollTop||document.body.scrollTop,g=document.documentElement.scrollLeft||document.body.scrollLeft,m=s.apply(this,r);for(p.html(a).style({opacity:1,"pointer-events":"all"});v--;)p.classed(d[v],!1);return i=c.get(h).apply(this),m?p.style(m):p.classed(h,!0).style({top:i.top+u[0]+y+"px",left:i.left+u[1]+g+"px"}),l},l.hide=function(){return f().style({opacity:0,"pointer-events":"none"}),l},l.attr=function(e,t){if(arguments.length<2&&"string"==typeof e)return f().attr(e);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.attr.apply(f(),n),l},l.style=function(e,t){if(arguments.length<2&&"string"==typeof e)return f().style(e);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.style.apply(f(),n),l},l.direction=function(t){return arguments.length?(e=null==t?t:d3.functor(t),l):e},l.offset=function(e){return arguments.length?(t=null==e?e:d3.functor(e),l):t},l.html=function(e){return arguments.length?(n=null==e?e:d3.functor(e),l):n},l.customPosition=function(e){return arguments.length?(s=null==e?e:d3.functor(e),l):s},l.destroy=function(){return r&&(f().remove(),r=null),l};var c=d3.map({n:function(){var e=h();return{top:e.n.y-r.offsetHeight,left:e.n.x-r.offsetWidth/2}},s:function(){var e=h();return{top:e.s.y,left:e.s.x-r.offsetWidth/2}},e:function(){var e=h();return{top:e.e.y-r.offsetHeight/2,left:e.e.x}},w:function(){var e=h();return{top:e.w.y-r.offsetHeight/2,left:e.w.x-r.offsetWidth}},nw:function(){var e=h();return{top:e.nw.y-r.offsetHeight,left:e.nw.x-r.offsetWidth}},ne:function(){var e=h();return{top:e.ne.y-r.offsetHeight,left:e.ne.x}},sw:function(){var e=h();return{top:e.sw.y,left:e.sw.x-r.offsetWidth}},se:function(){var e=h();return{top:e.se.y,left:e.e.x}}}),d=c.keys();function u(){var e=d3.select(document.createElement("div"));return e.style({position:"absolute",top:0,opacity:0,"pointer-events":"none","box-sizing":"border-box"}),e.node()}function f(){return null===r&&(r=u(),document.body.appendChild(r)),d3.select(r)}function h(){for(var e=o||d3.event.target;void 0===e.getScreenCTM&&"undefined"===e.parentNode;)e=e.parentNode;var t={},n=e.getScreenCTM(),r=e.getBBox(),i=r.width,s=r.height,l=r.x,c=r.y;return a.x=l,a.y=c,t.nw=a.matrixTransform(n),a.x+=i,t.ne=a.matrixTransform(n),a.y+=s,t.se=a.matrixTransform(n),a.x-=i,t.sw=a.matrixTransform(n),a.y-=s/2,t.w=a.matrixTransform(n),a.x+=i,t.e=a.matrixTransform(n),a.x-=i/2,a.y-=s/2,t.n=a.matrixTransform(n),a.y+=s,t.s=a.matrixTransform(n),t}return l}})?r.apply(t,i):r)||(e.exports=a)},256:function(e,t,n){"use strict";var r=r||{};r.Text=function(){function e(e,t,n,r){n=n||10;var i=t/3;return"string"==typeof e?(i*=10/(e.substring(0,t/3).length+1.5),i+=1,e.match(/[\u0900-\u0DFF\u1100-\u11FF\u2E80-\u2EFF\u3000-\u9FFF]/)&&(i*=.6),i<n&&(i=n),Math.round(i)):(i<n&&(i=n),Math.round(i))}return{calcFontSizeRaw:e,calcFontSize:function(t,n,r,i){return e(t,n,r)+"px"},getTextWithElipsisIfNeeded:function(e,t){return"string"==typeof e&&e.length>t?e.substring(0,t-3)+"...":e}}}(),r.Transition={fadeIn:function(e,t){e.style("opacity",0).transition().duration(t).style("opacity",1)},fadeOut:function(e,t){e.style("opacity",1).transition().duration(t).style("opacity",0)}},r.Click={delayDblClick:function(){var e=d3.dispatch("click","dblclick");return d3.rebind((function(t){var n,r=null;t.on("mousedown",(function(){n=d3.mouse(document.body),new Date})),t.on("mouseup",(function(t){var i,a;i=n,a=d3.mouse(document.body),Math.sqrt(Math.pow(i[0]-a[0],2),Math.pow(i[1]-a[1],2))>5||(r?(window.clearTimeout(r),r=null,e.dblclick(t)):r=window.setTimeout((d3.event,function(){e.click(t),r=null}),250))}))}),e,"on")}},t.a=r},257:function(e,t,n){"use strict";var r=r||{};r.Export={getCSSRules:function(e){var t=$('link[href="'+e+'"]')[0].sheet.rules,n="";return _.each(t,(function(e){n+=e.cssText})),n},generateBase64ImageSource:function(){var e=d3.selectAll("svg").attr({version:"1.1",xmlns:"http://www.w3.org/2000/svg"}).node().parentNode.innerHTML;return"data:image/svg+xml;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(e)))}},t.a=r},266:function(e,t,n){"use strict";var r=r||{};r.SingleChild={addPlaceholders:function e(t,n){if(t.children){for(var r=0;r<t.children.length;r++)e(t.children[r]);if(1===t.children.length){var i=1.2*t.size;n&&(i=.1*t.children[0].size),t.children.push({name:"placeholder",size:i})}}},removePlaceholders:function e(t){for(var n=t.length-1;n>=0;n--){var r=t[n];"placeholder"===r.name?t.splice(n,1):r.children&&e(r.children)}},centerNodes:function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.children&&1===n.children.length){var r=n.x-n.children[0].x;n.children[0].x+=r,i(n.children[0],r)}}function i(e,t){if(e.children)for(var n=0;n<e.children.length;n++)e.children[n].x+=t,i(e.children[n],t)}},makePositionsRelativeToZero:function(e){for(var t=e[0].x,n=e[0].y,r=0;r<e.length;r++){var i=e[r];i.x-=t,i.y-=n}}},t.a=r},84:function(e,t,n){"use strict";n.r(t);var r=n(255),i=n.n(r),a=n(266),o=n(256),s=n(257);n(5);function l(e,t,n,r,l,c,d,u,f,h,p,v,y){return{restrict:"AE",template:'<div id="classChart"></div>',scope:{classHierarchyData:"=",flattenedClassNames:"=",selectedClass:"=",currentSliderValue:"=",showClassInfoPanel:"=",showExternalElements:"=",hidePrefixes:"=",currentBrowserLimit:"="},link:function(d,g,m){!function(d,g){var m=d3.layout.pack().size([780,780]).value((function(e){return e.size})),x=d3.scale.linear().domain([0,4]).range(["hsl(19, 70%, 90%)","hsl(19, 70%, 50%)"]).interpolate(d3.interpolateHcl),w=d3.select("#classChart").insert("svg:svg","h2").attr("viewBox","0 0 800 800").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null);function S(){return w.append("svg:g").attr({id:"main-group",transform:"translate(400,400)"})}function C(){return"true"===p.get(v.CLASS_HIERARCHY_HIDE_PREFIXES)}function E(){var e=s.a.Export.getCSSRules("css/rdf-class-hierarchy-labels.css?v=2.2.4-TR2");d3.selectAll("#main-group").append("defs"),$("defs").append('<style type="text/css"><![CDATA['+e+"]]></style>"),d3.selectAll("g").style("opacity",1);var t=s.a.Export.generateBase64ImageSource();d3.select(this).attr({href:t,download:"class-hierarchy-"+c.getActiveRepository()+".svg"})}d.hidePrefixes=C();var T,R,A=S();if(!d.classHierarchyData.classCount&&c.getActiveRepository()&&!c.isSystemRepository()){e.loader=!0,e.hierarchyError=!1;const t=p.get("classHierarchy-selectedGraph-"+c.getActiveRepository());n.getClassHierarchyData(null!==t?t.contextID.uri:"").success((function(t,n,r){e.loader=!1,207===n&&u.warning(y.instant("graphexplore.update.diagram"),y.instant("graphexplore.repository.data.changed")),d.classHierarchyData=t,d3.select("#download-svg").on("mouseover",E)})).error((function(t){e.loader=!1,e.hierarchyError=getError(t),u.error(y.instant("graphexplore.error.request.failed",{name:h,error:getError(t)}))}))}var H,P,I,b,k,F,L,D,N={};function z(n,s,c,u){I&&I(),b&&b(),d3.selectAll("#main-group").remove(),A=S(),a.a.SingleChild.addPlaceholders(n,!0),P=c||n;var p,v=m.nodes(n);P.isInFocusTransitive=!0,a.a.SingleChild.removePlaceholders(v),a.a.SingleChild.centerNodes(v),a.a.SingleChild.makePositionsRelativeToZero(v);var y=i()().attr("class","d3-tip").customPosition((function(e){return{top:"inherit",bottom:r.innerHeight-d3.event.clientY+"px",right:r.innerWidth-d3.event.clientX+"px"}})).html((function(e){return e.name}));w.call(y);var g=A.selectAll("circle").data(v).enter().append("g");s.doFade&&g.each((function(e){o.a.Transition.fadeIn(d3.select(this),550)}));var C,E=[],k=g.append("circle").attr("class",(function(e){return e.role})).attr("guide-selector",(function(e){return"class-"+e.name})).style("fill",(function(e){return e.children?x(e.depth):"#E0D0D0"})).each((function(e){if(e.circle=d3.select(this),e.name!==h){var t=e.name;E.push({name:t}),N[[t]]=e,e.circle.classed("rdf-class",!0),e.circle.on("mouseover",(function(){s.noPrefixes||e.textHidden?y.show(e):y.hide(e)})),e.circle.on("mouseout",y.hide)}})).on("gdb-focus",R).on("gdb-zoom",B);function F(e){d3.selectAll(".selected").classed("selected",e.selected=!1),e.circle.classed("selected",e.selected=!0),C=e}function L(){d.showClassInfoPanel=!1}E&&(E=_.uniqBy(E,"name"),d.flattenedClassNames=E);var D=o.a.Click.delayDblClick();d3.selectAll(".parent, .topLevelParent, .child, .root").call(D);R=function(e){B(e),e.name===h?(L(),d3.selectAll(".selected").classed("selected",!1)):(F(e),d.selectedClass=C,d.showClassInfoPanel=!0,d.$on("sidePanelClosed",(function(t){d3.selectAll(".selected").classed("selected",e.selected=!1)})))},D.on("click",(function(e){e.id&&r.history.pushState({id:e.id},"classHierarchyPage"+e.id,"hierarchy#"+e.id),y.hide(),R(e)})),D.on("dblclick",(function(t){t!==n&&(y.hide(),F(t),e.$broadcast("goToDomainRangeGraphView",C,P),d3.event.stopPropagation())}));var $=0;w.on("wheel",(function(){y.hide();var e=d3.event;e.preventDefault(),e.stopPropagation();var t=(new Date).getTime();if(t-$>100){$=t;var n="";e.deltaY<=-1?n="in":e.deltaY>=1&&(n="out");var i=e.target.__data__;if(i||(i=P),"in"===n){if(i!==P){for(;i.parent&&!i.parent.isInFocusTransitive;)i=i.parent;i.depth<P.depth&&(i=P)}if(i===P&&i.children){for(var a=i.children[0],o=1;o<i.children.length;o++)i.children[o].sortingRank>a.sortingRank&&(a=i.children[o]);a.children&&(i=a)}else i.children||(i=i.parent);B(i,!0)}else"out"===n&&(i=P.parent)&&B(i,!0);P.name===h&&r.history.replaceState({id:1},"classHierarchyPage1","hierarchy#1"),O()}}));var z=A.selectAll("text").data(v).enter().append("text").attr("class",(function(e){return e.children&&e.children.length?"label":"label child-label"})).each((function(e){e.textSel=d3.select(this)}));s.noPrefixes?(H!==n&&(z.each((function(e){var t=e.name.indexOf(":");e.name.indexOf("http://")>-1?e.noPrefixName=e.name:t>-1&&(e.noPrefixName=e.name.substring(t+1))})),H=n),z.style("font-size",(function(e){return o.a.Text.calcFontSize(e.noPrefixName,e.r)})).text((function(e){return o.a.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r/3)}))):z.style("font-size",(function(e){return o.a.Text.calcFontSize(e.name,e.r)})).text((function(e){return o.a.Text.getTextWithElipsisIfNeeded(e.name,e.r/3)})),z.style("display",(function(e){return e.parent===n?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,null):(e.textHidden=!0,"none")})),s.doFade&&!s.keepPrevState&&z.each((function(e){o.a.Transition.fadeIn(d3.select(this),550)})),T=function(){function e(e){e&&k.each((function(t){e==t.id&&R(t)}))}var n=t.hash();r.onpopstate=function(t){t.state&&e(t.state.id)},e(n)};var U=A.selectAll("circle, text");function M(e,t){var n=800/e[2];p=e,U.attr("transform",(function(t){return"translate("+(t.x-e[0])*n+","+(t.y-e[1])*n+")"})),k.attr("r",(function(e){return e.r*n})),t&&z.each((function(e){e.fullName!==P.topLevelParentUri&&P.topLevelParentUri!==h||(e.textSel.style("display","none"),P.children&&P.children.length?_.each(P.children,(function(e){e.textSel.style("display","inline")})):P.textSel.style("display","inline"),P.parent&&_.each(P.parent.children,(function(e){e.name!==P.name&&e.textSel.style("display","inline")})))})),z.style("font-size",(function(e){return s.noPrefixes?o.a.Text.calcFontSize(e.noPrefixName,e.r*n):o.a.Text.calcFontSize(e.name,e.r*n)})).text((function(e){return s.noPrefixes?o.a.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r*n/3):o.a.Text.getTextWithElipsisIfNeeded(e.name,e.r*n/3)}))}function V(e){var t=2*e+20;return 2*e/t<.3&&(t=2*e+2),t}function W(e){!e.isInFocusTransitive&&e.parent&&e.parent.isInFocusTransitive||(e.textHidden=!0,this.style.display="none")}function Y(e){!e.isInFocusTransitive&&e.parent&&e.parent.isInFocusTransitive&&(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,this.style.display="")}function B(e,t){if(l((function(){d.showExternalElements=e.name===h})),P!==e&&(e.id&&r.history.replaceState({id:e.id},"classHierarchyPage"+e.id,"hierarchy#"+e.id),e.children||(e=e.parent,P!==e))){if(t&&(L(),d3.selectAll(".selected").classed("selected",!1)),P.parent)for(var n=P;n;)n.isInFocusTransitive=!1,n=n.parent;for(n=e;n;)n.isInFocusTransitive=n.children,n=n.parent;if(2*(P=e).r/(2*P.r+20)<.3||d.currentSliderValue>d.currentBrowserLimit)M([P.x,P.y,V(P.r)]),z.each((function(e){W.call(this,e),Y.call(this,e)}));else d3.transition().duration(f).tween("zoom",(function(e){var t=d3.interpolateZoom(p,[P.x,P.y,V(P.r)]);return function(e){M(t(e))}})).selectAll("text").each("start",W).each("end",Y)}}M([P.x,P.y,V(P.r)],u),I=d.$on("rootFocus",(function(){r.history.pushState({id:1},"classHierarchyPage1","hierarchy#1"),R(n)})),b=d.$on("classSearch",(function(e){R(e)}))}function O(){var t=d.classHierarchyData.classCount;let n=p.get(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);(!n||n>t)&&(n=t,p.set(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,n)),e.$broadcast("classCount",t,n)}window.addEventListener("resize",O),window.addEventListener("beforeunload",(function e(){window.removeEventListener("resize",O),window.removeEventListener("beforeunload",e)})),d.$watch("classHierarchyData",(function(){k&&k(),F&&F(),L&&L(),D&&D();var e=C();if(d.classHierarchyData.classCount){O();var t=angular.copy(d.classHierarchyData);var n,r,i=function(e){return m.nodes(e).sort((function(e,t){return e.sortingRank>t.sortingRank?-1:e.sortingRank<t.sortingRank||e.depth>t.depth?1:e.depth<t.depth?-1:0}))}(t);function a(e,t){var i={keepPrevState:!0,noPrefixes:C()};r=i.noPrefixes,z(n||e,i,P,!0),l((function(){p.set(v.CLASS_HIERARCHY_SWITCH_PREFIXES,t),T()}),70)}function o(e,i,o){if(e){p.set(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,e),n={name:h,children:[]};for(var s=new Set,l=1;l<=e;l++)s.add(i[l].id),i[l].parent===i[0]&&n.children.push(i[l]);if(function e(t){if(t.children){for(var n=[],r=0;r<t.children.length;r++)s.has(t.children[r].id)&&n.push($.extend({},t.children[r]));t.children=n;for(r=0;r<t.children.length;r++)e(t.children[r])}}(n),o)r=angular.isUndefined(r)?C():r,z(n,{noPrefixes:r});else a(t)}}var s,c=p.get(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);if(c)o(c,i);else{var u={doFade:!0,keepPrevState:!0,noPrefixes:C()};z(t,u),T()}k=d.$watch("hidePrefixes",(function(n){angular.isUndefined(n)||e?e=void 0:l((function(){!function(e){angular.isUndefined(e)||p.set(v.CLASS_HIERARCHY_HIDE_PREFIXES,e)}(n),a(t,!0)}),50)}),!0),F=d.$watch("currentSliderValue",(function(e){o(e,i,!0)}),!0),D=d.$on("onEnterKeypressSearchAction",(function(e){s&&R(s)})),L=d.$on("searchedClass",(function(e,t){(s=N[t.name])&&R(s)}))}}),!0)}(d)}}}angular.module("graphdb.framework.graphexplore.directives.class",["graphdb.framework.graphexplore.controllers.class","graphdb.framework.utils.localstorageadapter"]).constant("ZOOM_DURATION",500).constant("ROOT_OBJ_NAME","RDF Class Hierarchy").directive("rdfClassHierarchy",l),l.$inject=["$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","$licenseService","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate"]}}]);
2
+ //# sourceMappingURL=20.9e9e388a98851c65f8f7.bundle.js.map