@itwin/map-layers-formats 4.1.0-dev.54 → 4.1.0-dev.56

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 (272) hide show
  1. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts +17 -0
  2. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -0
  3. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js +42 -0
  4. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -0
  5. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  6. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +4 -5
  7. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  8. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +39 -24
  9. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  10. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts +5 -0
  11. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
  12. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +4 -0
  13. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  14. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +15 -6
  15. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  16. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +6 -4
  17. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  18. package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  19. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +13 -0
  20. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -0
  21. package/lib/cjs/ArcGisFeature/{ArcGisFeatureJSON.js → ArcGisJsonFeatureReader.js} +36 -58
  22. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -0
  23. package/lib/cjs/ArcGisFeature/{ArcGisFeaturePBF.d.ts → ArcGisPbfFeatureReader.d.ts} +6 -7
  24. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -0
  25. package/lib/cjs/ArcGisFeature/{ArcGisFeaturePBF.js → ArcGisPbfFeatureReader.js} +46 -32
  26. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -0
  27. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +1 -1
  28. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  29. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  30. package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts +34 -0
  31. package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts.map +1 -0
  32. package/lib/cjs/Tools/MapFeatureInfoDecorator.js +281 -0
  33. package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -0
  34. package/lib/cjs/Tools/MapFeatureInfoTool.d.ts +38 -0
  35. package/lib/cjs/Tools/MapFeatureInfoTool.d.ts.map +1 -0
  36. package/lib/cjs/Tools/MapFeatureInfoTool.js +113 -0
  37. package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -0
  38. package/lib/cjs/map-layers-formats.d.ts +1 -0
  39. package/lib/cjs/map-layers-formats.d.ts.map +1 -1
  40. package/lib/cjs/map-layers-formats.js +1 -0
  41. package/lib/cjs/map-layers-formats.js.map +1 -1
  42. package/lib/cjs/mapLayersFormats.d.ts +12 -1
  43. package/lib/cjs/mapLayersFormats.d.ts.map +1 -1
  44. package/lib/cjs/mapLayersFormats.js +11 -1
  45. package/lib/cjs/mapLayersFormats.js.map +1 -1
  46. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts +17 -0
  47. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -0
  48. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js +38 -0
  49. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -0
  50. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  51. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +4 -5
  52. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  53. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +40 -25
  54. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  55. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts +5 -0
  56. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
  57. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +4 -0
  58. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  59. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +15 -6
  60. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  61. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +4 -2
  62. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  63. package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  64. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +13 -0
  65. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -0
  66. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js +107 -0
  67. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -0
  68. package/lib/esm/ArcGisFeature/{ArcGisFeaturePBF.d.ts → ArcGisPbfFeatureReader.d.ts} +6 -7
  69. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -0
  70. package/lib/esm/ArcGisFeature/{ArcGisFeaturePBF.js → ArcGisPbfFeatureReader.js} +44 -30
  71. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -0
  72. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +1 -1
  73. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  74. package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  75. package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts +34 -0
  76. package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts.map +1 -0
  77. package/lib/esm/Tools/MapFeatureInfoDecorator.js +277 -0
  78. package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -0
  79. package/lib/esm/Tools/MapFeatureInfoTool.d.ts +38 -0
  80. package/lib/esm/Tools/MapFeatureInfoTool.d.ts.map +1 -0
  81. package/lib/esm/Tools/MapFeatureInfoTool.js +110 -0
  82. package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -0
  83. package/lib/esm/map-layers-formats.d.ts +1 -0
  84. package/lib/esm/map-layers-formats.d.ts.map +1 -1
  85. package/lib/esm/map-layers-formats.js +1 -0
  86. package/lib/esm/map-layers-formats.js.map +1 -1
  87. package/lib/esm/mapLayersFormats.d.ts +12 -1
  88. package/lib/esm/mapLayersFormats.d.ts.map +1 -1
  89. package/lib/esm/mapLayersFormats.js +13 -2
  90. package/lib/esm/mapLayersFormats.js.map +1 -1
  91. package/lib/public/locales/en/mapLayersFormats.json +12 -0
  92. package/package.json +15 -12
  93. package/.nycrc +0 -10
  94. package/.rush/temp/operation/build/all.log +0 -1
  95. package/.rush/temp/operation/build/state.json +0 -3
  96. package/.rush/temp/operation/cover/all.log +0 -103
  97. package/.rush/temp/operation/cover/state.json +0 -3
  98. package/.rush/temp/operation/docs/all.log +0 -30
  99. package/.rush/temp/operation/docs/state.json +0 -3
  100. package/.rush/temp/package-deps_build.json +0 -36
  101. package/.rush/temp/package-deps_cover.json +0 -36
  102. package/.rush/temp/package-deps_docs.json +0 -36
  103. package/.rush/temp/shrinkwrap-deps.json +0 -495
  104. package/CHANGELOG.json +0 -176
  105. package/config/rush-project.json +0 -6
  106. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts +0 -15
  107. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts.map +0 -1
  108. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js.map +0 -1
  109. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.d.ts.map +0 -1
  110. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js.map +0 -1
  111. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts +0 -33
  112. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts.map +0 -1
  113. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js +0 -143
  114. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js.map +0 -1
  115. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +0 -2
  116. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts.map +0 -1
  117. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +0 -35
  118. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +0 -1
  119. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +0 -2
  120. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts.map +0 -1
  121. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js +0 -162
  122. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +0 -1
  123. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +0 -2
  124. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts.map +0 -1
  125. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js +0 -168
  126. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +0 -1
  127. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +0 -2
  128. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts.map +0 -1
  129. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +0 -812
  130. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +0 -1
  131. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +0 -2
  132. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts.map +0 -1
  133. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js +0 -104
  134. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +0 -1
  135. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +0 -2
  136. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts.map +0 -1
  137. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +0 -215
  138. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +0 -1
  139. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +0 -2
  140. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts.map +0 -1
  141. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js +0 -95
  142. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +0 -1
  143. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +0 -2
  144. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts.map +0 -1
  145. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +0 -60
  146. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +0 -1
  147. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts +0 -7
  148. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts.map +0 -1
  149. package/lib/cjs/test/ArcGisFeature/Mocks.js +0 -19
  150. package/lib/cjs/test/ArcGisFeature/Mocks.js.map +0 -1
  151. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts +0 -56
  152. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts.map +0 -1
  153. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js +0 -420
  154. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js.map +0 -1
  155. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +0 -1043
  156. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +0 -1
  157. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js +0 -427
  158. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js.map +0 -1
  159. package/lib/cjs/test/coverage/.nyc_output/329513f2-7069-4b0e-a487-c3b48366153a.json +0 -1
  160. package/lib/cjs/test/coverage/.nyc_output/a1ec61a9-c1af-46dd-9c85-a6f85693894b.json +0 -1
  161. package/lib/cjs/test/coverage/.nyc_output/processinfo/329513f2-7069-4b0e-a487-c3b48366153a.json +0 -1
  162. package/lib/cjs/test/coverage/.nyc_output/processinfo/a1ec61a9-c1af-46dd-9c85-a6f85693894b.json +0 -1
  163. package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +0 -1
  164. package/lib/cjs/test/coverage/cobertura-coverage.xml +0 -1206
  165. package/lib/cjs/test/coverage/lcov-report/base.css +0 -224
  166. package/lib/cjs/test/coverage/lcov-report/block-navigation.js +0 -87
  167. package/lib/cjs/test/coverage/lcov-report/favicon.png +0 -0
  168. package/lib/cjs/test/coverage/lcov-report/index.html +0 -131
  169. package/lib/cjs/test/coverage/lcov-report/prettify.css +0 -1
  170. package/lib/cjs/test/coverage/lcov-report/prettify.js +0 -2
  171. package/lib/cjs/test/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  172. package/lib/cjs/test/coverage/lcov-report/sorter.js +0 -196
  173. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +0 -145
  174. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +0 -550
  175. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +0 -730
  176. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +0 -1672
  177. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +0 -763
  178. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +0 -223
  179. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +0 -598
  180. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +0 -301
  181. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +0 -832
  182. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +0 -236
  183. package/lib/cjs/test/coverage/lcov-report/src/index.html +0 -131
  184. package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +0 -130
  185. package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +0 -163
  186. package/lib/cjs/test/coverage/lcov.info +0 -1399
  187. package/lib/cjs/tsconfig.tsbuildinfo +0 -1
  188. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts +0 -15
  189. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts.map +0 -1
  190. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js +0 -129
  191. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js.map +0 -1
  192. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.d.ts.map +0 -1
  193. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js.map +0 -1
  194. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts +0 -33
  195. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts.map +0 -1
  196. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js +0 -139
  197. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js.map +0 -1
  198. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +0 -2
  199. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts.map +0 -1
  200. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +0 -33
  201. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +0 -1
  202. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +0 -2
  203. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts.map +0 -1
  204. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js +0 -160
  205. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +0 -1
  206. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +0 -2
  207. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts.map +0 -1
  208. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js +0 -166
  209. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +0 -1
  210. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +0 -2
  211. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts.map +0 -1
  212. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +0 -810
  213. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +0 -1
  214. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +0 -2
  215. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts.map +0 -1
  216. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js +0 -102
  217. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +0 -1
  218. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +0 -2
  219. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts.map +0 -1
  220. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +0 -213
  221. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +0 -1
  222. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +0 -2
  223. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts.map +0 -1
  224. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js +0 -93
  225. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +0 -1
  226. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +0 -2
  227. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts.map +0 -1
  228. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +0 -58
  229. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +0 -1
  230. package/lib/esm/test/ArcGisFeature/Mocks.d.ts +0 -7
  231. package/lib/esm/test/ArcGisFeature/Mocks.d.ts.map +0 -1
  232. package/lib/esm/test/ArcGisFeature/Mocks.js +0 -16
  233. package/lib/esm/test/ArcGisFeature/Mocks.js.map +0 -1
  234. package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts +0 -56
  235. package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts.map +0 -1
  236. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js +0 -417
  237. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js.map +0 -1
  238. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +0 -1043
  239. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +0 -1
  240. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js +0 -424
  241. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js.map +0 -1
  242. package/lib/esm/tsconfig.tsbuildinfo +0 -1
  243. package/lib/test/junit_results.xml +0 -169
  244. package/map-layers-formats.build.cache.log +0 -2
  245. package/map-layers-formats.cover.log +0 -103
  246. package/map-layers-formats.docs.log +0 -30
  247. package/map-layers-formats.lint.error.log +0 -1
  248. package/map-layers-formats.lint.log +0 -2
  249. package/src/ArcGisFeature/ArcGisFeatureFormat.ts +0 -20
  250. package/src/ArcGisFeature/ArcGisFeatureJSON.ts +0 -155
  251. package/src/ArcGisFeature/ArcGisFeaturePBF.ts +0 -215
  252. package/src/ArcGisFeature/ArcGisFeatureProvider.ts +0 -529
  253. package/src/ArcGisFeature/ArcGisFeatureQuery.ts +0 -226
  254. package/src/ArcGisFeature/ArcGisFeatureReader.ts +0 -46
  255. package/src/ArcGisFeature/ArcGisFeatureRenderer.ts +0 -171
  256. package/src/ArcGisFeature/ArcGisFeatureResponse.ts +0 -72
  257. package/src/ArcGisFeature/ArcGisSymbologyRenderer.ts +0 -249
  258. package/src/ArcGisFeature/esriPBuffer.gen.ts +0 -2612
  259. package/src/map-layers-formats.ts +0 -15
  260. package/src/mapLayersFormats.ts +0 -26
  261. package/src/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.ts +0 -46
  262. package/src/test/ArcGisFeature/ArcGisFeatureJSON.test.ts +0 -202
  263. package/src/test/ArcGisFeature/ArcGisFeaturePBF.test.ts +0 -227
  264. package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +0 -977
  265. package/src/test/ArcGisFeature/ArcGisFeatureQuery.test.ts +0 -117
  266. package/src/test/ArcGisFeature/ArcGisFeatureRenderer.test.ts +0 -296
  267. package/src/test/ArcGisFeature/ArcGisFeatureResponse.test.ts +0 -109
  268. package/src/test/ArcGisFeature/ArcGisSymbologyRenderer.test.ts +0 -77
  269. package/src/test/ArcGisFeature/Mocks.ts +0 -19
  270. package/src/test/ArcGisFeature/NewYorkDataset.ts +0 -423
  271. package/src/test/ArcGisFeature/PhillyLandmarksDataset.ts +0 -455
  272. package/tsconfig.json +0 -20
@@ -0,0 +1,34 @@
1
+ import { ColorDef } from "@itwin/core-common";
2
+ import { DecorateContext, Decorator } from "@itwin/core-frontend";
3
+ import { LineString3d, Point2d } from "@itwin/core-geometry";
4
+ import { MapFeatureInfoToolData } from "./MapFeatureInfoTool";
5
+ /** @internal */
6
+ export declare class MapFeatureInfoDecorator implements Decorator {
7
+ readonly useCachedDecorations = true;
8
+ readonly disableTerrainDraper = true;
9
+ markerSize: Point2d;
10
+ lineWidth: number;
11
+ private _highlightColor;
12
+ get highlightColor(): ColorDef;
13
+ set highlightColor(color: ColorDef);
14
+ get defaultMarkerIconSvgXml(): string;
15
+ private _drapePoints;
16
+ private _scratchPoints;
17
+ private _drapePointsStates;
18
+ private _drapedStrings?;
19
+ private _allGeomDraped;
20
+ private _draper?;
21
+ private _markerImage;
22
+ private _markerSet;
23
+ private _state;
24
+ private readonly _graphicType;
25
+ constructor();
26
+ private updateMarkerImage;
27
+ private _computeChordTolerance;
28
+ setState: (state: MapFeatureInfoToolData) => void;
29
+ private getGeometryTreeRef;
30
+ protected renderGraphics(context: DecorateContext): import("@itwin/core-frontend").RenderGraphic | undefined;
31
+ addDrapedStrings(drapedStrings: LineString3d[]): void;
32
+ decorate(context: DecorateContext): void;
33
+ }
34
+ //# sourceMappingURL=MapFeatureInfoDecorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapFeatureInfoDecorator.d.ts","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoDecorator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACsC,eAAe,EAAE,SAAS,EAED,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAwD,YAAY,EAAE,OAAO,EAAuG,MAAM,sBAAsB,CAAC;AACxN,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAqI9D,gBAAgB;AAChB,qBAAa,uBAAwB,YAAW,SAAS;IAEvD,SAAgB,oBAAoB,QAAQ;IAC5C,SAAgB,oBAAoB,QAAQ;IACrC,UAAU,UAAuB;IACjC,SAAS,SAAM;IACtB,OAAO,CAAC,eAAe,CAAmC;IAE1D,IAAW,cAAc,IACQ,QAAQ,CADkB;IAC3D,IAAW,cAAc,CAAC,KAAK,EAAE,QAAQ,EAGxC;IAED,IAAW,uBAAuB,WAAwtB;IAE1vB,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAEhD,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,MAAM,CAAqC;IAEnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;;IAOzD,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,sBAAsB;IAavB,QAAQ,UAAW,sBAAsB,UA2B9C;IAEF,OAAO,CAAC,kBAAkB;IAa1B,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe;IA+F1C,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE;IAQ9C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;CAShD"}
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapFeatureInfoDecorator = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ /* eslint-disable no-console */
9
+ const core_common_1 = require("@itwin/core-common");
10
+ const core_frontend_1 = require("@itwin/core-frontend");
11
+ const core_geometry_1 = require("@itwin/core-geometry");
12
+ /** A TileGeometryCollector that restricts collection to tiles that overlap a line string.
13
+ /* @internal
14
+ */
15
+ class DrapeLineStringCollector extends core_frontend_1.TileGeometryCollector {
16
+ constructor(user, chordTolerance, range, transform, _points) {
17
+ super({ user, chordTolerance, range, transform });
18
+ this._points = _points;
19
+ }
20
+ collectTile(tile) {
21
+ let status = super.collectTile(tile);
22
+ if ("reject" !== status && !this.rangeOverlapsLineString(tile.range))
23
+ status = "reject";
24
+ return status;
25
+ }
26
+ rangeOverlapsLineString(range) {
27
+ let inside = false;
28
+ const clipper = core_geometry_1.ConvexClipPlaneSet.createRange3dPlanes(range, true, true, true, true, false, false);
29
+ if (this._options.transform)
30
+ clipper.transformInPlace(this._options.transform);
31
+ for (let i = 0; i < this._points.length - 1 && !inside; i++)
32
+ inside = clipper.announceClippedSegmentIntervals(0, 1, this._points.getPoint3dAtUncheckedPointIndex(i), this._points.getPoint3dAtUncheckedPointIndex(i + 1));
33
+ return inside;
34
+ }
35
+ }
36
+ /** @internal */
37
+ class TerrainDraper {
38
+ constructor(viewport, treeRef) {
39
+ this.viewport = viewport;
40
+ this.treeRef = treeRef;
41
+ this.tileUserId = core_frontend_1.TileUser.generateId();
42
+ core_frontend_1.IModelApp.tileAdmin.registerUser(this);
43
+ }
44
+ dispose() {
45
+ core_frontend_1.IModelApp.tileAdmin.forgetUser(this);
46
+ }
47
+ get iModel() { return this.viewport.iModel; }
48
+ onRequestStateChanged() {
49
+ this.viewport.invalidateDecorations();
50
+ }
51
+ discloseTileTrees(trees) {
52
+ trees.disclose(this.treeRef);
53
+ }
54
+ drapeLineString(outStrings, inPoints, tolerance, maxDistance = 1.0E5) {
55
+ const tree = this.treeRef.treeOwner.load();
56
+ if (!tree)
57
+ return "loading";
58
+ const range = core_geometry_1.Range3d.createNull();
59
+ range.extendArray(inPoints);
60
+ range.extendZOnly(-maxDistance); // Expand - but not so much that we get opposite side of globe.
61
+ range.extendZOnly(maxDistance);
62
+ const collector = new DrapeLineStringCollector(this, tolerance, range, tree.iModelTransform, inPoints);
63
+ this.treeRef.collectTileGeometry(collector);
64
+ collector.requestMissingTiles();
65
+ if (collector.isAllGeometryLoaded && collector.polyfaces.length > 0) {
66
+ for (const polyface of collector.polyfaces)
67
+ outStrings.push(...core_geometry_1.PolyfaceQuery.sweepLineStringToFacets(inPoints, polyface, core_geometry_1.SweepLineStringToFacetsOptions.create(core_geometry_1.Vector3d.unitZ(), undefined, true, true, false, false)));
68
+ return "complete";
69
+ }
70
+ return "loading";
71
+ }
72
+ }
73
+ /** @internal */
74
+ class PinMarker extends core_frontend_1.Marker {
75
+ constructor(worldLocation, size, image) {
76
+ super(worldLocation, size);
77
+ this.image = image;
78
+ this.imageOffset = new core_geometry_1.Point3d(0, Math.floor(size.y * .5));
79
+ }
80
+ }
81
+ /** @internal */
82
+ class PinMarkerCluster extends core_frontend_1.Marker {
83
+ /** Create a new cluster marker */
84
+ constructor(location, size, cluster, image) {
85
+ super(location, size);
86
+ this.title = core_frontend_1.IModelApp.localization.getLocalizedString("mapLayersFormats:Messages.MapFeatureInfoDecorator.clusterZoomIn", { nbInstances: cluster.markers.length });
87
+ this.imageOffset = new core_geometry_1.Point3d(0, size.y * 0.5);
88
+ this.label = cluster.markers.length.toLocaleString();
89
+ this.labelColor = "black";
90
+ this.labelFont = "bold 14px sans-serif";
91
+ if (image)
92
+ this.setImage(image);
93
+ }
94
+ /** Show the cluster as a white circle with an outline */
95
+ drawFunc(ctx) {
96
+ ctx.beginPath();
97
+ ctx.strokeStyle = "#372528";
98
+ ctx.fillStyle = "white";
99
+ ctx.lineWidth = 5;
100
+ ctx.arc(0, 0, this.size.x * 0.5, 0, Math.PI * 2);
101
+ ctx.fill();
102
+ ctx.stroke();
103
+ }
104
+ onMouseButton(_ev) { return true; } // Don't allow clicks to be sent to active tool...
105
+ }
106
+ /** @internal */
107
+ class PinMarkerSet extends core_frontend_1.MarkerSet {
108
+ getClusterMarker(cluster) {
109
+ // No image passed to the cluster, we prefer to have the circle only
110
+ return new PinMarkerCluster(cluster.getClusterLocation(), cluster.markers[0].size, cluster, undefined);
111
+ }
112
+ }
113
+ /** @internal */
114
+ class MapFeatureInfoDecorator {
115
+ get highlightColor() { return this._highlightColor; }
116
+ set highlightColor(color) {
117
+ this.updateMarkerImage();
118
+ this._highlightColor = color;
119
+ }
120
+ get defaultMarkerIconSvgXml() { return `<svg class="indicator" viewBox="0 0 22 22" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="m11 0a7.44506 7.44506 0 0 0 -7.5 7.2875c0 1.65 1.132 4.2625 3.25477 8.1125 1.55652 2.75 4.24523 6.6 4.24523 6.6s2.68865-3.9875 4.24528-6.7375c2.12272-3.85 3.25472-6.4625 3.25472-8.1125a7.4215 7.4215 0 0 0 -7.5-7.15z" fill="black"/><path d="m11 1.01715a6.46476 6.46476 0 0 0 -6.48285 6.27033c0 1.72619 1.67181 4.97973 3.12836 7.62139.97564 1.7237 2.42828 3.92176 3.34118 5.27161.91413-1.39148 2.385-3.673 3.37336-5.41907 1.451-2.63171 3.1228-5.88525 3.1228-7.61139a6.39982 6.39982 0 0 0 -6.48285-6.13287zm.00183 8.98285a3 3 0 1 1 3-3 3 3 0 0 1 -3 3z" fill="${this.highlightColor.toRgbString()}"/></svg>`; }
121
+ constructor() {
122
+ this.useCachedDecorations = true;
123
+ this.disableTerrainDraper = true;
124
+ this.markerSize = new core_geometry_1.Point2d(32, 32);
125
+ this.lineWidth = 3;
126
+ this._highlightColor = core_common_1.ColorDef.from(0, 255, 255, 127);
127
+ this._drapePoints = new core_geometry_1.GrowableXYZArray();
128
+ this._scratchPoints = new core_geometry_1.GrowableXYZArray();
129
+ this._drapePointsStates = [];
130
+ this._allGeomDraped = false;
131
+ this._markerSet = new PinMarkerSet();
132
+ this._graphicType = core_frontend_1.GraphicType.WorldOverlay;
133
+ this.setState = (state) => {
134
+ this._drapedStrings = undefined;
135
+ this._allGeomDraped = false;
136
+ this._state = state;
137
+ core_frontend_1.IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);
138
+ this._drapePoints.clear();
139
+ this._drapePointsStates = [];
140
+ if (!this.disableTerrainDraper && this._state.mapInfo?.layerInfos && state.hit.viewport.displayStyle.displayTerrain) {
141
+ if (state.hit?.modelId) {
142
+ const drapeTreeRef = this.getGeometryTreeRef(state.hit.viewport);
143
+ if (drapeTreeRef) {
144
+ this._draper = new TerrainDraper(state.hit.viewport, drapeTreeRef);
145
+ return;
146
+ }
147
+ }
148
+ }
149
+ if (this._draper) {
150
+ // Dispose draper every time?
151
+ this._draper.dispose();
152
+ this._draper = undefined;
153
+ }
154
+ };
155
+ this._markerImage = new Image();
156
+ this.updateMarkerImage();
157
+ }
158
+ updateMarkerImage() {
159
+ const base64 = core_common_1.Base64EncodedString.encode(this.defaultMarkerIconSvgXml);
160
+ this._markerImage.src = `data:image/svg+xml;base64,${base64}`;
161
+ }
162
+ _computeChordTolerance(viewport, applyAspectRatioSkew, computeRange) {
163
+ let pixelSize = 1;
164
+ // Compute the horizontal distance in meters between two adjacent pixels at the center of the geometry.
165
+ pixelSize = viewport.getPixelSizeAtPoint(computeRange().center);
166
+ pixelSize = viewport.target.adjustPixelSizeForLOD(pixelSize);
167
+ // Aspect ratio skew > 1.0 stretches the view in Y. In that case use the smaller vertical pixel distance for our stroke tolerance.
168
+ const skew = applyAspectRatioSkew ? viewport.view.getAspectRatioSkew() : 0;
169
+ if (skew > 1)
170
+ pixelSize /= skew;
171
+ return pixelSize * 0.25;
172
+ }
173
+ getGeometryTreeRef(vp) {
174
+ let treeRef;
175
+ if (vp.backgroundMapSettings.applyTerrain) {
176
+ vp.forEachMapTreeRef((ref) => {
177
+ if (!treeRef && ref instanceof core_frontend_1.MapTileTreeReference) {
178
+ treeRef = ref.createGeometryTreeReference();
179
+ }
180
+ });
181
+ }
182
+ return treeRef;
183
+ }
184
+ renderGraphics(context) {
185
+ this._markerSet.markers.clear();
186
+ if (this._state?.mapInfo?.layerInfos === undefined) {
187
+ return undefined;
188
+ }
189
+ const builder = context.createGraphicBuilder(this._graphicType);
190
+ if (this._draper) {
191
+ if (this._drapePoints.length === 0 && this._state.mapInfo.layerInfos) {
192
+ for (const layerInfo of this._state.mapInfo.layerInfos) {
193
+ if (layerInfo.subLayerInfos) {
194
+ for (const subLayerInfo of layerInfo.subLayerInfos) {
195
+ for (const feature of subLayerInfo.features) {
196
+ if (feature.geometries) {
197
+ for (const geom of feature.geometries) {
198
+ if (geom.graphic.type === "linestring") {
199
+ this._drapePointsStates.push({ count: geom.graphic.points.length, collectorState: "loading" });
200
+ this._drapePoints.pushAll(geom.graphic.points);
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ if (!this._allGeomDraped) {
210
+ let hasMissingLineStrings = false;
211
+ let drapePointsOffset = 0;
212
+ for (const state of this._drapePointsStates) {
213
+ if (state.collectorState === "loading") {
214
+ this._scratchPoints.clear();
215
+ this._scratchPoints.resize(state.count);
216
+ let dstIdx = 0;
217
+ for (let srcIdx = drapePointsOffset; srcIdx < drapePointsOffset + state.count; srcIdx++) {
218
+ this._scratchPoints.transferFromGrowableXYZArray(dstIdx++, this._drapePoints, srcIdx);
219
+ }
220
+ const drapeRange = core_geometry_1.Range3d.createNull();
221
+ drapeRange.extendArray(this._scratchPoints);
222
+ const drapedStrings = [];
223
+ const tolerance = this._computeChordTolerance(context.viewport, true, () => drapeRange) * 10; // 10 pixels
224
+ if ("loading" === this._draper.drapeLineString(drapedStrings, this._scratchPoints, tolerance)) {
225
+ hasMissingLineStrings = true;
226
+ }
227
+ else {
228
+ this.addDrapedStrings(drapedStrings);
229
+ state.collectorState = "complete";
230
+ }
231
+ }
232
+ drapePointsOffset += state.count;
233
+ }
234
+ this._allGeomDraped = !hasMissingLineStrings;
235
+ }
236
+ if (this._drapedStrings) {
237
+ builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);
238
+ this._drapedStrings.forEach((line) => builder.addLineString(line.points));
239
+ }
240
+ }
241
+ else {
242
+ builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);
243
+ for (const layerInfo of this._state.mapInfo.layerInfos) {
244
+ if (layerInfo.subLayerInfos && !(layerInfo.subLayerInfos instanceof HTMLElement)) {
245
+ for (const subLayerInfo of layerInfo.subLayerInfos) {
246
+ for (const feature of subLayerInfo.features) {
247
+ if (feature.geometries) {
248
+ for (const geom of feature.geometries) {
249
+ if (geom.graphic.type === "pointstring") {
250
+ for (const point of geom.graphic.points)
251
+ this._markerSet.markers.add(new PinMarker(point, this.markerSize, this._markerImage));
252
+ }
253
+ else {
254
+ builder.addPrimitive(geom.graphic);
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ }
263
+ return builder.finish();
264
+ }
265
+ addDrapedStrings(drapedStrings) {
266
+ if (!this._drapedStrings) {
267
+ this._drapedStrings = [];
268
+ }
269
+ for (const ds of drapedStrings)
270
+ this._drapedStrings.push(ds);
271
+ }
272
+ decorate(context) {
273
+ const graphics = this.renderGraphics(context);
274
+ if (graphics)
275
+ context.addDecoration(this._graphicType, graphics);
276
+ this._markerSet.addDecoration(context);
277
+ return;
278
+ }
279
+ }
280
+ exports.MapFeatureInfoDecorator = MapFeatureInfoDecorator;
281
+ //# sourceMappingURL=MapFeatureInfoDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapFeatureInfoDecorator.js","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoDecorator.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/* eslint-disable no-console */\nimport { Base64EncodedString, ColorDef } from \"@itwin/core-common\";\nimport {\n BeButtonEvent, Cluster, CollectTileStatus, DecorateContext, Decorator, DisclosedTileTreeSet,\n GeometryTileTreeReference, GraphicType, IModelApp, MapTileTreeReference, Marker, MarkerImage, MarkerSet,\n Tile, TileGeometryCollector, TileTreeReference, TileUser, Viewport } from \"@itwin/core-frontend\";\nimport { ConvexClipPlaneSet, CurvePrimitive, GrowableXYZArray, LineString3d, Point2d, Point3d, PolyfaceQuery, Range3d, SweepLineStringToFacetsOptions, Transform, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\nimport { MapFeatureInfoToolData } from \"./MapFeatureInfoTool\";\n\n/** A TileGeometryCollector that restricts collection to tiles that overlap a line string.\n/* @internal\n*/\nclass DrapeLineStringCollector extends TileGeometryCollector {\n constructor(user: TileUser, chordTolerance: number, range: Range3d, transform: Transform, private _points: GrowableXYZArray) {\n super({ user, chordTolerance, range, transform });\n }\n\n public override collectTile(tile: Tile): CollectTileStatus {\n let status = super.collectTile(tile);\n if (\"reject\" !== status && !this.rangeOverlapsLineString(tile.range))\n status = \"reject\";\n\n return status;\n }\n\n private rangeOverlapsLineString(range: Range3d) {\n let inside = false;\n const clipper = ConvexClipPlaneSet.createRange3dPlanes(range, true, true, true, true, false, false);\n if (this._options.transform)\n clipper.transformInPlace(this._options.transform);\n\n for (let i = 0; i < this._points.length - 1 && !inside; i++)\n inside = clipper.announceClippedSegmentIntervals(0, 1, this._points.getPoint3dAtUncheckedPointIndex(i), this._points.getPoint3dAtUncheckedPointIndex(i + 1));\n\n return inside;\n }\n}\n\n/** @internal */\nclass TerrainDraper implements TileUser {\n public readonly tileUserId: number;\n\n public constructor(public readonly viewport: Viewport, public readonly treeRef: GeometryTileTreeReference) {\n this.tileUserId = TileUser.generateId();\n IModelApp.tileAdmin.registerUser(this);\n }\n\n public dispose(): void {\n IModelApp.tileAdmin.forgetUser(this);\n }\n\n public get iModel() { return this.viewport.iModel; }\n\n public onRequestStateChanged() {\n this.viewport.invalidateDecorations();\n }\n\n public discloseTileTrees(trees: DisclosedTileTreeSet) {\n trees.disclose(this.treeRef);\n }\n\n public drapeLineString(outStrings: CurvePrimitive[], inPoints: GrowableXYZArray, tolerance: number, maxDistance = 1.0E5): \"loading\" | \"complete\" {\n const tree = this.treeRef.treeOwner.load();\n if (!tree)\n return \"loading\";\n\n const range = Range3d.createNull();\n range.extendArray(inPoints);\n range.extendZOnly(-maxDistance); // Expand - but not so much that we get opposite side of globe.\n range.extendZOnly(maxDistance);\n\n const collector = new DrapeLineStringCollector(this, tolerance, range, tree.iModelTransform, inPoints);\n this.treeRef.collectTileGeometry(collector);\n collector.requestMissingTiles();\n\n if (collector.isAllGeometryLoaded && collector.polyfaces.length > 0) {\n for (const polyface of collector.polyfaces)\n outStrings.push(...PolyfaceQuery.sweepLineStringToFacets(inPoints, polyface,\n SweepLineStringToFacetsOptions.create(Vector3d.unitZ(), undefined, true, true, false, false)));\n return \"complete\";\n }\n\n return \"loading\";\n }\n}\n\n/** @internal */\nclass PinMarker extends Marker {\n public constructor(worldLocation: XYAndZ, size: XAndY, image: MarkerImage) {\n super(worldLocation, size);\n this.image = image;\n this.imageOffset = new Point3d(0, Math.floor(size.y * .5));\n }\n}\n\n/** @internal */\nclass PinMarkerCluster extends Marker {\n /** Create a new cluster marker */\n constructor(location: XYAndZ, size: XAndY, cluster: Cluster<PinMarker>, image: MarkerImage | Promise<MarkerImage> | undefined) {\n super(location, size);\n\n this.title = IModelApp.localization.getLocalizedString(\"mapLayersFormats:Messages.MapFeatureInfoDecorator.clusterZoomIn\", { nbInstances: cluster.markers.length});\n\n this.imageOffset = new Point3d(0, size.y * 0.5);\n this.label = cluster.markers.length.toLocaleString();\n this.labelColor = \"black\";\n this.labelFont = \"bold 14px sans-serif\";\n\n if (image)\n this.setImage(image);\n }\n\n /** Show the cluster as a white circle with an outline */\n public override drawFunc(ctx: CanvasRenderingContext2D): void {\n ctx.beginPath();\n ctx.strokeStyle = \"#372528\";\n ctx.fillStyle = \"white\";\n ctx.lineWidth = 5;\n ctx.arc(0, 0, this.size.x * 0.5, 0, Math.PI * 2);\n ctx.fill();\n ctx.stroke();\n }\n\n public override onMouseButton(_ev: BeButtonEvent): boolean { return true; } // Don't allow clicks to be sent to active tool...\n}\n\n/** @internal */\nclass PinMarkerSet extends MarkerSet<PinMarker> {\n protected getClusterMarker(cluster: Cluster<PinMarker>): Marker {\n // No image passed to the cluster, we prefer to have the circle only\n return new PinMarkerCluster(cluster.getClusterLocation(), cluster.markers[0].size, cluster, undefined);\n }\n}\n\n/** @internal */\ninterface DrapePointState {\n count: number;\n collectorState: string;\n}\n\n/** @internal */\nexport class MapFeatureInfoDecorator implements Decorator {\n\n public readonly useCachedDecorations = true;\n public readonly disableTerrainDraper = true;\n public markerSize = new Point2d(32, 32);\n public lineWidth = 3;\n private _highlightColor = ColorDef.from(0, 255, 255, 127);\n\n public get highlightColor() { return this._highlightColor;}\n public set highlightColor(color: ColorDef) {\n this.updateMarkerImage();\n this._highlightColor = color;\n }\n\n public get defaultMarkerIconSvgXml() { return `<svg class=\"indicator\" viewBox=\"0 0 22 22\" width=\"22\" height=\"22\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m11 0a7.44506 7.44506 0 0 0 -7.5 7.2875c0 1.65 1.132 4.2625 3.25477 8.1125 1.55652 2.75 4.24523 6.6 4.24523 6.6s2.68865-3.9875 4.24528-6.7375c2.12272-3.85 3.25472-6.4625 3.25472-8.1125a7.4215 7.4215 0 0 0 -7.5-7.15z\" fill=\"black\"/><path d=\"m11 1.01715a6.46476 6.46476 0 0 0 -6.48285 6.27033c0 1.72619 1.67181 4.97973 3.12836 7.62139.97564 1.7237 2.42828 3.92176 3.34118 5.27161.91413-1.39148 2.385-3.673 3.37336-5.41907 1.451-2.63171 3.1228-5.88525 3.1228-7.61139a6.39982 6.39982 0 0 0 -6.48285-6.13287zm.00183 8.98285a3 3 0 1 1 3-3 3 3 0 0 1 -3 3z\" fill=\"${this.highlightColor.toRgbString()}\"/></svg>`; }\n\n private _drapePoints = new GrowableXYZArray();\n private _scratchPoints = new GrowableXYZArray();\n\n private _drapePointsStates: DrapePointState[] = [];\n private _drapedStrings?: LineString3d[];\n private _allGeomDraped = false;\n private _draper?: TerrainDraper;\n private _markerImage: HTMLImageElement;\n private _markerSet = new PinMarkerSet();\n\n private _state: MapFeatureInfoToolData | undefined;\n\n private readonly _graphicType = GraphicType.WorldOverlay;\n\n public constructor() {\n this._markerImage = new Image();\n this.updateMarkerImage();\n }\n\n private updateMarkerImage() {\n const base64 = Base64EncodedString.encode(this.defaultMarkerIconSvgXml);\n this._markerImage.src = `data:image/svg+xml;base64,${base64}`;\n }\n\n private _computeChordTolerance(viewport: Viewport, applyAspectRatioSkew: boolean, computeRange: () => Range3d) {\n let pixelSize = 1;\n // Compute the horizontal distance in meters between two adjacent pixels at the center of the geometry.\n pixelSize = viewport.getPixelSizeAtPoint(computeRange().center);\n pixelSize = viewport.target.adjustPixelSizeForLOD(pixelSize);\n\n // Aspect ratio skew > 1.0 stretches the view in Y. In that case use the smaller vertical pixel distance for our stroke tolerance.\n const skew = applyAspectRatioSkew ? viewport.view.getAspectRatioSkew() : 0;\n if (skew > 1)\n pixelSize /= skew;\n return pixelSize * 0.25;\n }\n\n public setState = (state: MapFeatureInfoToolData) => {\n\n this._drapedStrings = undefined;\n this._allGeomDraped = false;\n\n this._state = state;\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\n\n this._drapePoints.clear();\n this._drapePointsStates = [];\n\n if (!this.disableTerrainDraper && this._state.mapInfo?.layerInfos && state.hit.viewport.displayStyle.displayTerrain) {\n\n if (state.hit?.modelId) {\n const drapeTreeRef = this.getGeometryTreeRef(state.hit.viewport);\n if (drapeTreeRef) {\n this._draper = new TerrainDraper(state.hit.viewport, drapeTreeRef);\n return;\n }\n }\n }\n\n if (this._draper) {\n // Dispose draper every time?\n this._draper.dispose();\n this._draper = undefined;\n }\n };\n\n private getGeometryTreeRef(vp: Viewport): GeometryTileTreeReference | undefined {\n let treeRef: GeometryTileTreeReference | undefined;\n if (vp.backgroundMapSettings.applyTerrain) {\n vp.forEachMapTreeRef((ref: TileTreeReference) => {\n if (!treeRef && ref instanceof MapTileTreeReference) {\n treeRef = ref.createGeometryTreeReference();\n }\n });\n }\n\n return treeRef;\n }\n\n protected renderGraphics(context: DecorateContext) {\n this._markerSet.markers.clear();\n\n if (this._state?.mapInfo?.layerInfos === undefined) {\n return undefined;\n }\n\n const builder = context.createGraphicBuilder(this._graphicType);\n\n if (this._draper) {\n if (this._drapePoints.length === 0 && this._state.mapInfo.layerInfos) {\n\n for (const layerInfo of this._state.mapInfo.layerInfos) {\n if (layerInfo.subLayerInfos) {\n for (const subLayerInfo of layerInfo.subLayerInfos) {\n for (const feature of subLayerInfo.features) {\n if (feature.geometries) {\n for (const geom of feature.geometries) {\n if (geom.graphic.type === \"linestring\") {\n this._drapePointsStates.push({ count: geom.graphic.points.length, collectorState: \"loading\" });\n this._drapePoints.pushAll(geom.graphic.points);\n }\n }\n }\n }\n }\n\n }\n }\n }\n\n if (!this._allGeomDraped) {\n\n let hasMissingLineStrings = false;\n let drapePointsOffset = 0;\n for (const state of this._drapePointsStates) {\n\n if (state.collectorState === \"loading\") {\n this._scratchPoints.clear();\n this._scratchPoints.resize(state.count);\n\n let dstIdx = 0;\n for (let srcIdx = drapePointsOffset; srcIdx < drapePointsOffset + state.count; srcIdx++) {\n this._scratchPoints.transferFromGrowableXYZArray(dstIdx++, this._drapePoints, srcIdx);\n }\n\n const drapeRange = Range3d.createNull();\n drapeRange.extendArray(this._scratchPoints);\n const drapedStrings: LineString3d[] = [];\n const tolerance = this._computeChordTolerance(context.viewport, true, () => drapeRange) * 10; // 10 pixels\n if (\"loading\" === this._draper.drapeLineString(drapedStrings, this._scratchPoints, tolerance)) {\n hasMissingLineStrings = true;\n } else {\n this.addDrapedStrings(drapedStrings);\n state.collectorState = \"complete\";\n }\n }\n drapePointsOffset += state.count;\n }\n this._allGeomDraped = !hasMissingLineStrings;\n }\n\n if (this._drapedStrings) {\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\n this._drapedStrings.forEach((line) => builder.addLineString(line.points));\n }\n\n } else {\n builder.setSymbology(this.highlightColor, this.highlightColor, this.lineWidth);\n for (const layerInfo of this._state.mapInfo.layerInfos) {\n if (layerInfo.subLayerInfos && !(layerInfo.subLayerInfos instanceof HTMLElement)) {\n for (const subLayerInfo of layerInfo.subLayerInfos) {\n for (const feature of subLayerInfo.features) {\n if (feature.geometries) {\n for (const geom of feature.geometries) {\n if (geom.graphic.type === \"pointstring\") {\n for (const point of geom.graphic.points)\n this._markerSet.markers.add(new PinMarker(point, this.markerSize, this._markerImage));\n } else {\n builder.addPrimitive(geom.graphic);\n }\n\n }\n }\n }\n }\n\n }\n\n }\n }\n\n return builder.finish();\n }\n\n public addDrapedStrings(drapedStrings: LineString3d[]) {\n if (!this._drapedStrings) {\n this._drapedStrings = [];\n }\n for (const ds of drapedStrings)\n this._drapedStrings.push(ds);\n }\n\n public decorate(context: DecorateContext): void {\n const graphics = this.renderGraphics(context);\n if (graphics)\n context.addDecoration(this._graphicType, graphics);\n\n this._markerSet.addDecoration(context);\n return;\n }\n\n}\n"]}
@@ -0,0 +1,38 @@
1
+ /** @packageDocumentation
2
+ * @module MapLayersFormats
3
+ */
4
+ import { BeButtonEvent, EventHandled, HitDetail, LocateFilterStatus, LocateResponse, MapFeatureInfo, PrimitiveTool } from "@itwin/core-frontend";
5
+ import { BeEvent } from "@itwin/core-bentley";
6
+ /** Data provided every time [[MapFeatureInfoTool]] retrieve feature information.
7
+ * @see [[MapFeatureInfoToolData]]
8
+ * @beta
9
+ */
10
+ export interface MapFeatureInfoToolData {
11
+ hit: HitDetail;
12
+ mapInfo?: MapFeatureInfo;
13
+ }
14
+ /** Tools that allow extracting feature information from map-layers.
15
+ * Simulate feature highlight by drawing overlay decorations. It also
16
+ * fire an event that provide further feature information meant to be displayed in a UI / Widget.
17
+ * @see [[MapFeatureInfoToolData]]
18
+ * @beta
19
+ */
20
+ export declare class MapFeatureInfoTool extends PrimitiveTool {
21
+ readonly onInfoReady: BeEvent<(data: MapFeatureInfoToolData) => void>;
22
+ static toolId: string;
23
+ static iconSpec: string;
24
+ private _decorator;
25
+ private _layerSettingsCache;
26
+ private readonly _detachListeners;
27
+ requireWriteableTarget(): boolean;
28
+ onPostInstall(): Promise<void>;
29
+ onCleanup(): Promise<void>;
30
+ /** @internal */
31
+ private getMapLayerInfoFromHit;
32
+ getToolTip(hit: HitDetail): Promise<HTMLElement | string>;
33
+ filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus>;
34
+ onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled>;
35
+ onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled>;
36
+ onRestartTool(): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=MapFeatureInfoTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapFeatureInfoTool.d.ts","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoTool.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,SAAS,EAET,kBAAkB,EAClB,cAAc,EACd,cAAc,EAEd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,SAAS,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,SAAgB,WAAW,iBAAsB,sBAAsB,KAAK,IAAI,EAAI;IAEpF,OAAuB,MAAM,SAAwB;IACrD,OAAuB,QAAQ,SAAc;IAE7C,OAAO,CAAC,UAAU,CAA0D;IAC5E,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvC,sBAAsB,IAAI,OAAO;IAI3B,aAAa;IAuBb,SAAS;IAO/B,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAaR,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IASzD,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI7E,gBAAgB,CACpC,EAAE,EAAE,aAAa,GAChB,OAAO,CAAC,YAAY,CAAC;IA4BF,eAAe,CACnC,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC;IAMF,aAAa;CAKpC"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module MapLayersFormats
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MapFeatureInfoTool = void 0;
11
+ const core_frontend_1 = require("@itwin/core-frontend");
12
+ const core_bentley_1 = require("@itwin/core-bentley");
13
+ const core_common_1 = require("@itwin/core-common");
14
+ const MapFeatureInfoDecorator_1 = require("./MapFeatureInfoDecorator");
15
+ /** Tools that allow extracting feature information from map-layers.
16
+ * Simulate feature highlight by drawing overlay decorations. It also
17
+ * fire an event that provide further feature information meant to be displayed in a UI / Widget.
18
+ * @see [[MapFeatureInfoToolData]]
19
+ * @beta
20
+ */
21
+ class MapFeatureInfoTool extends core_frontend_1.PrimitiveTool {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.onInfoReady = new core_bentley_1.BeEvent();
25
+ this._decorator = new MapFeatureInfoDecorator_1.MapFeatureInfoDecorator();
26
+ this._layerSettingsCache = new Map();
27
+ this._detachListeners = [];
28
+ }
29
+ requireWriteableTarget() {
30
+ return false;
31
+ }
32
+ async onPostInstall() {
33
+ await super.onPostInstall();
34
+ this.initLocateElements();
35
+ core_frontend_1.IModelApp.locateManager.options.allowDecorations = true;
36
+ this._layerSettingsCache.clear();
37
+ // Listen of display style configuration changes, that we don't have to restart the tool to be up to date.
38
+ const vp = this.targetView;
39
+ if (vp) {
40
+ this._detachListeners.push(vp.onChangeView.addListener((_vp, _previous) => {
41
+ this._layerSettingsCache.clear();
42
+ }));
43
+ this._detachListeners.push(vp.displayStyle.settings.onMapImageryChanged.addListener((_newImagery) => {
44
+ this._layerSettingsCache.clear();
45
+ }));
46
+ }
47
+ core_frontend_1.IModelApp.viewManager.addDecorator(this._decorator);
48
+ }
49
+ async onCleanup() {
50
+ this._detachListeners.forEach((f) => f());
51
+ this._detachListeners.length = 0;
52
+ core_frontend_1.IModelApp.viewManager.dropDecorator(this._decorator);
53
+ }
54
+ /** @internal */
55
+ getMapLayerInfoFromHit(hit) {
56
+ let mapLayerFromHit = [];
57
+ const fromCache = this._layerSettingsCache.get(hit.sourceId);
58
+ if (fromCache) {
59
+ mapLayerFromHit = fromCache;
60
+ }
61
+ else if (this.targetView) {
62
+ mapLayerFromHit = this.targetView?.mapLayerFromHit(hit).filter(((info) => info.settings instanceof core_common_1.ImageMapLayerSettings && info.provider?.supportsMapFeatureInfo));
63
+ this._layerSettingsCache.set(hit.sourceId, mapLayerFromHit);
64
+ }
65
+ return mapLayerFromHit;
66
+ }
67
+ async getToolTip(hit) {
68
+ const infos = this.getMapLayerInfoFromHit(hit);
69
+ if (infos.length > 0) {
70
+ const names = infos.map((info) => info.settings.name);
71
+ return `Layer${names.length > 1 ? "s" : ""}: ${names.join(", ")}`;
72
+ }
73
+ return "";
74
+ }
75
+ async filterHit(hit, _out) {
76
+ return this.getMapLayerInfoFromHit(hit).length > 0 ? core_frontend_1.LocateFilterStatus.Accept : core_frontend_1.LocateFilterStatus.Reject;
77
+ }
78
+ async onDataButtonDown(ev) {
79
+ const hit = await core_frontend_1.IModelApp.locateManager.doLocate(new core_frontend_1.LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);
80
+ if (hit !== undefined) {
81
+ let mapInfo;
82
+ if (this.getMapLayerInfoFromHit(hit).length > 0) {
83
+ core_frontend_1.IModelApp.toolAdmin.setCursor("wait");
84
+ try {
85
+ mapInfo = await hit.viewport.getMapFeatureInfo(hit);
86
+ if (mapInfo) {
87
+ this._decorator.setState({ hit, mapInfo });
88
+ }
89
+ }
90
+ finally {
91
+ core_frontend_1.IModelApp.toolAdmin.setCursor(undefined);
92
+ }
93
+ }
94
+ this.onInfoReady.raiseEvent({ hit, mapInfo });
95
+ return core_frontend_1.EventHandled.Yes;
96
+ }
97
+ return core_frontend_1.EventHandled.No;
98
+ }
99
+ async onResetButtonUp(_ev) {
100
+ /* Common reset behavior for primitive tools is calling onReinitialize to restart or exitTool to terminate. */
101
+ await this.onReinitialize();
102
+ return core_frontend_1.EventHandled.No;
103
+ }
104
+ async onRestartTool() {
105
+ const tool = new MapFeatureInfoTool();
106
+ if (!(await tool.run()))
107
+ return this.exitTool();
108
+ }
109
+ }
110
+ MapFeatureInfoTool.toolId = "MapFeatureInfoTool";
111
+ MapFeatureInfoTool.iconSpec = "icon-map";
112
+ exports.MapFeatureInfoTool = MapFeatureInfoTool;
113
+ //# sourceMappingURL=MapFeatureInfoTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapFeatureInfoTool.js","sourceRoot":"","sources":["../../../src/Tools/MapFeatureInfoTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module MapLayersFormats\n */\n\nimport {\n BeButtonEvent,\n EventHandled,\n HitDetail,\n IModelApp,\n LocateFilterStatus,\n LocateResponse,\n MapFeatureInfo,\n MapLayerInfoFromTileTree,\n PrimitiveTool,\n} from \"@itwin/core-frontend\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { MapFeatureInfoDecorator } from \"./MapFeatureInfoDecorator\";\n\n/** Data provided every time [[MapFeatureInfoTool]] retrieve feature information.\n * @see [[MapFeatureInfoToolData]]\n * @beta\n */\nexport interface MapFeatureInfoToolData {\n hit: HitDetail;\n mapInfo?: MapFeatureInfo;\n}\n\n/** Tools that allow extracting feature information from map-layers.\n * Simulate feature highlight by drawing overlay decorations. It also\n * fire an event that provide further feature information meant to be displayed in a UI / Widget.\n * @see [[MapFeatureInfoToolData]]\n * @beta\n */\nexport class MapFeatureInfoTool extends PrimitiveTool {\n public readonly onInfoReady = new BeEvent<(data: MapFeatureInfoToolData) => void>();\n\n public static override toolId = \"MapFeatureInfoTool\";\n public static override iconSpec = \"icon-map\";\n\n private _decorator: MapFeatureInfoDecorator = new MapFeatureInfoDecorator();\n private _layerSettingsCache = new Map<string, MapLayerInfoFromTileTree[]>();\n private readonly _detachListeners: VoidFunction[] = [];\n\n public override requireWriteableTarget(): boolean {\n return false;\n }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n this.initLocateElements();\n IModelApp.locateManager.options.allowDecorations = true;\n\n this._layerSettingsCache.clear();\n\n // Listen of display style configuration changes, that we don't have to restart the tool to be up to date.\n const vp = this.targetView;\n if (vp) {\n\n this._detachListeners.push(vp.onChangeView.addListener((_vp, _previous) => {\n this._layerSettingsCache.clear();\n }));\n\n this._detachListeners.push(vp.displayStyle.settings.onMapImageryChanged.addListener((_newImagery: any) => {\n this._layerSettingsCache.clear();\n }));\n }\n\n IModelApp.viewManager.addDecorator(this._decorator);\n }\n\n public override async onCleanup() {\n this._detachListeners.forEach((f) => f());\n this._detachListeners.length = 0;\n\n IModelApp.viewManager.dropDecorator(this._decorator);\n }\n\n /** @internal */\n private getMapLayerInfoFromHit(hit: HitDetail) {\n let mapLayerFromHit: MapLayerInfoFromTileTree[] = [];\n const fromCache = this._layerSettingsCache.get(hit.sourceId);\n if (fromCache) {\n mapLayerFromHit = fromCache;\n } else if (this.targetView) {\n mapLayerFromHit = this.targetView?.mapLayerFromHit(hit).filter(((info) => info.settings instanceof ImageMapLayerSettings && info.provider?.supportsMapFeatureInfo));\n this._layerSettingsCache.set(hit.sourceId, mapLayerFromHit);\n }\n\n return mapLayerFromHit;\n }\n\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string> {\n const infos = this.getMapLayerInfoFromHit(hit);\n if (infos.length > 0) {\n const names = infos.map((info) => info.settings.name);\n return `Layer${names.length > 1 ? \"s\" : \"\"}: ${names.join(\", \")}`;\n }\n return \"\";\n }\n\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\n return this.getMapLayerInfoFromHit(hit).length > 0 ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n }\n\n public override async onDataButtonDown(\n ev: BeButtonEvent\n ): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(\n new LocateResponse(),\n true,\n ev.point,\n ev.viewport,\n ev.inputSource\n );\n if (hit !== undefined) {\n let mapInfo: MapFeatureInfo | undefined;\n if (this.getMapLayerInfoFromHit(hit).length > 0) {\n IModelApp.toolAdmin.setCursor(\"wait\");\n try {\n mapInfo = await hit.viewport.getMapFeatureInfo(hit);\n if (mapInfo) {\n this._decorator.setState({ hit, mapInfo });\n }\n } finally {\n IModelApp.toolAdmin.setCursor(undefined);\n }\n }\n\n this.onInfoReady.raiseEvent({ hit, mapInfo });\n return EventHandled.Yes;\n }\n return EventHandled.No;\n }\n\n public override async onResetButtonUp(\n _ev: BeButtonEvent\n ): Promise<EventHandled> {\n /* Common reset behavior for primitive tools is calling onReinitialize to restart or exitTool to terminate. */\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n public override async onRestartTool() {\n const tool = new MapFeatureInfoTool();\n if (!(await tool.run()))\n return this.exitTool();\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  export * from "./mapLayersFormats";
2
2
  export * from "./ArcGisFeature/ArcGisFeatureProvider";
3
+ export * from "./Tools/MapFeatureInfoTool";
3
4
  /** @docs-package-description
4
5
  * This package provides support for additional map layer formats that are not included in the @itwin/core-frontend package.
5
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"map-layers-formats.d.ts","sourceRoot":"","sources":["../../src/map-layers-formats.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AAEtD;;GAEG;AAEH;;GAEG"}
1
+ {"version":3,"file":"map-layers-formats.d.ts","sourceRoot":"","sources":["../../src/map-layers-formats.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAE3C;;GAEG;AAEH;;GAEG"}
@@ -20,6 +20,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  __exportStar(require("./mapLayersFormats"), exports);
22
22
  __exportStar(require("./ArcGisFeature/ArcGisFeatureProvider"), exports);
23
+ __exportStar(require("./Tools/MapFeatureInfoTool"), exports);
23
24
  /** @docs-package-description
24
25
  * This package provides support for additional map layer formats that are not included in the @itwin/core-frontend package.
25
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"map-layers-formats.js","sourceRoot":"","sources":["../../src/map-layers-formats.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,qDAAmC;AACnC,wEAAsD;AAEtD;;GAEG;AAEH;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nexport * from \"./mapLayersFormats\";\r\nexport * from \"./ArcGisFeature/ArcGisFeatureProvider\";\r\n\r\n/** @docs-package-description\r\n * This package provides support for additional map layer formats that are not included in the @itwin/core-frontend package.\r\n */\r\n\r\n/** @docs-group-description MapLayersFormats\r\n * APIs for working with the map layer formats provided by this package.\r\n */\r\n"]}
1
+ {"version":3,"file":"map-layers-formats.js","sourceRoot":"","sources":["../../src/map-layers-formats.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,qDAAmC;AACnC,wEAAsD;AACtD,6DAA2C;AAE3C;;GAEG;AAEH;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nexport * from \"./mapLayersFormats\";\nexport * from \"./ArcGisFeature/ArcGisFeatureProvider\";\nexport * from \"./Tools/MapFeatureInfoTool\";\n\n/** @docs-package-description\n * This package provides support for additional map layer formats that are not included in the @itwin/core-frontend package.\n */\n\n/** @docs-group-description MapLayersFormats\n * APIs for working with the map layer formats provided by this package.\n */\n"]}
@@ -1,11 +1,22 @@
1
+ import { Localization } from "@itwin/core-common";
2
+ /** Configuration options.
3
+ * @beta
4
+ */
5
+ export interface MapLayersFormatsConfig {
6
+ localization?: Localization;
7
+ }
1
8
  /** The primary API for the `@itwin/map-layers-formats` package. It allows the package's features to be [[initialize]]d.
2
9
  * @beta
3
10
  */
4
11
  export declare class MapLayersFormats {
12
+ private static _defaultNs;
13
+ static localization: Localization;
5
14
  /** Registers the [MapLayerFormat]($frontend)s provided by this package for use with [IModelApp]($frontend).
6
15
  * Typically, an application will call `MapLayersFormats.initialize` immediately after [IModelApp.startup]($frontend).
7
16
  * This function has no effect if called **before** [IModelApp.startup]($frontend) or **after** [IModelApp.shutdown]($frontend).
8
17
  */
9
- static initialize(): void;
18
+ static initialize(config?: MapLayersFormatsConfig): Promise<void>;
19
+ /** The internationalization service namespace. */
20
+ static get localizationNamespace(): string;
10
21
  }
11
22
  //# sourceMappingURL=mapLayersFormats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapLayersFormats.d.ts","sourceRoot":"","sources":["../../src/mapLayersFormats.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;OAGG;WACW,UAAU;CAKzB"}
1
+ {"version":3,"file":"mapLayersFormats.d.ts","sourceRoot":"","sources":["../../src/mapLayersFormats.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAsB;IAC/C,OAAc,YAAY,EAAE,YAAY,CAAC;IAEzC;;;OAGG;WACiB,UAAU,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E,kDAAkD;IAClD,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;CAEF"}