@itwin/map-layers-formats 4.1.0-dev.8 → 4.1.0-dev.80

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 (288) hide show
  1. package/CHANGELOG.md +74 -1
  2. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts +19 -0
  3. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -0
  4. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js +46 -0
  5. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -0
  6. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.d.ts.map +1 -1
  7. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js +3 -0
  8. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  9. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +16 -8
  10. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  11. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +157 -45
  12. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  13. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts +5 -0
  14. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
  15. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +4 -0
  16. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  17. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +15 -6
  18. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  19. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +6 -4
  20. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  21. package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  22. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +14 -0
  23. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -0
  24. package/lib/cjs/ArcGisFeature/{ArcGisFeatureJSON.js → ArcGisJsonFeatureReader.js} +51 -55
  25. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -0
  26. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +22 -0
  27. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -0
  28. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js +249 -0
  29. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -0
  30. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +32 -77
  31. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  32. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +88 -128
  33. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  34. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts +152 -0
  35. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts.map +1 -0
  36. package/lib/cjs/ArcGisFeature/EsriSymbology.js +181 -0
  37. package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -0
  38. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  39. package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts +34 -0
  40. package/lib/cjs/Tools/MapFeatureInfoDecorator.d.ts.map +1 -0
  41. package/lib/cjs/Tools/MapFeatureInfoDecorator.js +281 -0
  42. package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -0
  43. package/lib/cjs/Tools/MapFeatureInfoTool.d.ts +38 -0
  44. package/lib/cjs/Tools/MapFeatureInfoTool.d.ts.map +1 -0
  45. package/lib/cjs/Tools/MapFeatureInfoTool.js +113 -0
  46. package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -0
  47. package/lib/cjs/map-layers-formats.d.ts +1 -0
  48. package/lib/cjs/map-layers-formats.d.ts.map +1 -1
  49. package/lib/cjs/map-layers-formats.js +1 -0
  50. package/lib/cjs/map-layers-formats.js.map +1 -1
  51. package/lib/cjs/mapLayersFormats.d.ts +12 -1
  52. package/lib/cjs/mapLayersFormats.d.ts.map +1 -1
  53. package/lib/cjs/mapLayersFormats.js +11 -1
  54. package/lib/cjs/mapLayersFormats.js.map +1 -1
  55. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts +19 -0
  56. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +1 -0
  57. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js +42 -0
  58. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +1 -0
  59. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.d.ts.map +1 -1
  60. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js +4 -1
  61. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  62. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +16 -8
  63. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  64. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +158 -46
  65. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  66. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts +5 -0
  67. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
  68. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +4 -0
  69. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  70. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +15 -6
  71. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  72. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +4 -2
  73. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  74. package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  75. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +14 -0
  76. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -0
  77. package/lib/esm/ArcGisFeature/{ArcGisFeatureJSON.js → ArcGisJsonFeatureReader.js} +51 -55
  78. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -0
  79. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +22 -0
  80. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -0
  81. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js +245 -0
  82. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -0
  83. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +32 -77
  84. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  85. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +84 -124
  86. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  87. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts +152 -0
  88. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts.map +1 -0
  89. package/lib/esm/ArcGisFeature/EsriSymbology.js +170 -0
  90. package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -0
  91. package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  92. package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts +34 -0
  93. package/lib/esm/Tools/MapFeatureInfoDecorator.d.ts.map +1 -0
  94. package/lib/esm/Tools/MapFeatureInfoDecorator.js +277 -0
  95. package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -0
  96. package/lib/esm/Tools/MapFeatureInfoTool.d.ts +38 -0
  97. package/lib/esm/Tools/MapFeatureInfoTool.d.ts.map +1 -0
  98. package/lib/esm/Tools/MapFeatureInfoTool.js +110 -0
  99. package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -0
  100. package/lib/esm/map-layers-formats.d.ts +1 -0
  101. package/lib/esm/map-layers-formats.d.ts.map +1 -1
  102. package/lib/esm/map-layers-formats.js +1 -0
  103. package/lib/esm/map-layers-formats.js.map +1 -1
  104. package/lib/esm/mapLayersFormats.d.ts +12 -1
  105. package/lib/esm/mapLayersFormats.d.ts.map +1 -1
  106. package/lib/esm/mapLayersFormats.js +13 -2
  107. package/lib/esm/mapLayersFormats.js.map +1 -1
  108. package/lib/public/locales/en/mapLayersFormats.json +12 -0
  109. package/package.json +19 -22
  110. package/.nycrc +0 -10
  111. package/.rush/temp/operation/build/all.log +0 -3
  112. package/.rush/temp/operation/build/state.json +0 -3
  113. package/.rush/temp/operation/cover/all.log +0 -98
  114. package/.rush/temp/operation/cover/state.json +0 -3
  115. package/.rush/temp/operation/docs/all.log +0 -30
  116. package/.rush/temp/operation/docs/state.json +0 -3
  117. package/.rush/temp/package-deps_build.json +0 -36
  118. package/.rush/temp/package-deps_cover.json +0 -36
  119. package/.rush/temp/package-deps_docs.json +0 -36
  120. package/.rush/temp/shrinkwrap-deps.json +0 -505
  121. package/CHANGELOG.json +0 -119
  122. package/config/rush-project.json +0 -6
  123. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts +0 -15
  124. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts.map +0 -1
  125. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js.map +0 -1
  126. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.d.ts +0 -15
  127. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.d.ts.map +0 -1
  128. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js +0 -201
  129. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js.map +0 -1
  130. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts +0 -33
  131. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts.map +0 -1
  132. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js +0 -143
  133. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js.map +0 -1
  134. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +0 -2
  135. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts.map +0 -1
  136. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +0 -35
  137. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +0 -1
  138. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +0 -2
  139. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts.map +0 -1
  140. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js +0 -162
  141. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +0 -1
  142. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +0 -2
  143. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts.map +0 -1
  144. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js +0 -168
  145. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +0 -1
  146. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +0 -2
  147. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts.map +0 -1
  148. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +0 -680
  149. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +0 -1
  150. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +0 -2
  151. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts.map +0 -1
  152. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js +0 -104
  153. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +0 -1
  154. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +0 -2
  155. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts.map +0 -1
  156. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +0 -215
  157. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +0 -1
  158. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +0 -2
  159. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts.map +0 -1
  160. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js +0 -95
  161. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +0 -1
  162. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +0 -2
  163. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts.map +0 -1
  164. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +0 -60
  165. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +0 -1
  166. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts +0 -7
  167. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts.map +0 -1
  168. package/lib/cjs/test/ArcGisFeature/Mocks.js +0 -19
  169. package/lib/cjs/test/ArcGisFeature/Mocks.js.map +0 -1
  170. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts +0 -56
  171. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts.map +0 -1
  172. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js +0 -420
  173. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js.map +0 -1
  174. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +0 -1043
  175. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +0 -1
  176. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js +0 -427
  177. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js.map +0 -1
  178. package/lib/cjs/test/coverage/.nyc_output/43b4d4c9-a360-43df-88fe-ecfb97b8832b.json +0 -1
  179. package/lib/cjs/test/coverage/.nyc_output/5c53bf83-e91a-4706-bc7c-fa9b79502114.json +0 -1
  180. package/lib/cjs/test/coverage/.nyc_output/processinfo/43b4d4c9-a360-43df-88fe-ecfb97b8832b.json +0 -1
  181. package/lib/cjs/test/coverage/.nyc_output/processinfo/5c53bf83-e91a-4706-bc7c-fa9b79502114.json +0 -1
  182. package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +0 -1
  183. package/lib/cjs/test/coverage/cobertura-coverage.xml +0 -1169
  184. package/lib/cjs/test/coverage/lcov-report/base.css +0 -224
  185. package/lib/cjs/test/coverage/lcov-report/block-navigation.js +0 -87
  186. package/lib/cjs/test/coverage/lcov-report/favicon.png +0 -0
  187. package/lib/cjs/test/coverage/lcov-report/index.html +0 -131
  188. package/lib/cjs/test/coverage/lcov-report/prettify.css +0 -1
  189. package/lib/cjs/test/coverage/lcov-report/prettify.js +0 -2
  190. package/lib/cjs/test/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  191. package/lib/cjs/test/coverage/lcov-report/sorter.js +0 -196
  192. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +0 -133
  193. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +0 -550
  194. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +0 -730
  195. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +0 -1546
  196. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +0 -763
  197. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +0 -223
  198. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +0 -598
  199. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +0 -301
  200. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +0 -832
  201. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +0 -236
  202. package/lib/cjs/test/coverage/lcov-report/src/index.html +0 -131
  203. package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +0 -130
  204. package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +0 -163
  205. package/lib/cjs/test/coverage/lcov.info +0 -1358
  206. package/lib/cjs/tsconfig.tsbuildinfo +0 -1
  207. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts +0 -15
  208. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts.map +0 -1
  209. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js.map +0 -1
  210. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.d.ts +0 -15
  211. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.d.ts.map +0 -1
  212. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js +0 -197
  213. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js.map +0 -1
  214. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts +0 -33
  215. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts.map +0 -1
  216. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js +0 -139
  217. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js.map +0 -1
  218. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +0 -2
  219. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts.map +0 -1
  220. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +0 -33
  221. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +0 -1
  222. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +0 -2
  223. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts.map +0 -1
  224. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js +0 -160
  225. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +0 -1
  226. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +0 -2
  227. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts.map +0 -1
  228. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js +0 -166
  229. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +0 -1
  230. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +0 -2
  231. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts.map +0 -1
  232. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +0 -678
  233. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +0 -1
  234. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +0 -2
  235. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts.map +0 -1
  236. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js +0 -102
  237. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +0 -1
  238. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +0 -2
  239. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts.map +0 -1
  240. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +0 -213
  241. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +0 -1
  242. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +0 -2
  243. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts.map +0 -1
  244. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js +0 -93
  245. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +0 -1
  246. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +0 -2
  247. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts.map +0 -1
  248. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +0 -58
  249. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +0 -1
  250. package/lib/esm/test/ArcGisFeature/Mocks.d.ts +0 -7
  251. package/lib/esm/test/ArcGisFeature/Mocks.d.ts.map +0 -1
  252. package/lib/esm/test/ArcGisFeature/Mocks.js +0 -16
  253. package/lib/esm/test/ArcGisFeature/Mocks.js.map +0 -1
  254. package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts +0 -56
  255. package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts.map +0 -1
  256. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js +0 -417
  257. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js.map +0 -1
  258. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +0 -1043
  259. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +0 -1
  260. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js +0 -424
  261. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js.map +0 -1
  262. package/lib/esm/tsconfig.tsbuildinfo +0 -1
  263. package/lib/test/junit_results.xml +0 -159
  264. package/map-layers-formats.build.log +0 -30
  265. package/src/ArcGisFeature/ArcGisFeatureFormat.ts +0 -16
  266. package/src/ArcGisFeature/ArcGisFeatureJSON.ts +0 -155
  267. package/src/ArcGisFeature/ArcGisFeaturePBF.ts +0 -215
  268. package/src/ArcGisFeature/ArcGisFeatureProvider.ts +0 -487
  269. package/src/ArcGisFeature/ArcGisFeatureQuery.ts +0 -226
  270. package/src/ArcGisFeature/ArcGisFeatureReader.ts +0 -46
  271. package/src/ArcGisFeature/ArcGisFeatureRenderer.ts +0 -171
  272. package/src/ArcGisFeature/ArcGisFeatureResponse.ts +0 -72
  273. package/src/ArcGisFeature/ArcGisSymbologyRenderer.ts +0 -249
  274. package/src/ArcGisFeature/esriPBuffer.gen.ts +0 -2612
  275. package/src/map-layers-formats.ts +0 -15
  276. package/src/mapLayersFormats.ts +0 -26
  277. package/src/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.ts +0 -46
  278. package/src/test/ArcGisFeature/ArcGisFeatureJSON.test.ts +0 -202
  279. package/src/test/ArcGisFeature/ArcGisFeaturePBF.test.ts +0 -227
  280. package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +0 -805
  281. package/src/test/ArcGisFeature/ArcGisFeatureQuery.test.ts +0 -117
  282. package/src/test/ArcGisFeature/ArcGisFeatureRenderer.test.ts +0 -296
  283. package/src/test/ArcGisFeature/ArcGisFeatureResponse.test.ts +0 -109
  284. package/src/test/ArcGisFeature/ArcGisSymbologyRenderer.test.ts +0 -77
  285. package/src/test/ArcGisFeature/Mocks.ts +0 -19
  286. package/src/test/ArcGisFeature/NewYorkDataset.ts +0 -423
  287. package/src/test/ArcGisFeature/PhillyLandmarksDataset.ts +0 -455
  288. package/tsconfig.json +0 -20
@@ -4,147 +4,87 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ArcGisSymbologyRenderer = exports.EsriSFS = exports.EsriPMS = exports.EsriSLS = void 0;
7
+ exports.ArcGisUniqueValueSymbologyRenderer = exports.ArcGisSimpleSymbologyRenderer = exports.ArcGisSymbologyRenderer = void 0;
8
8
  const core_bentley_1 = require("@itwin/core-bentley");
9
- const core_common_1 = require("@itwin/core-common");
10
- // Convert a channel array [r, g, b, a] to ColorDef
11
- function colorFromArray(channels) {
12
- if (channels && channels.length === 4) {
13
- // Alpha channel is reversed, 255 = opaque
14
- return core_common_1.ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);
15
- }
16
- return undefined;
17
- }
18
- const loggerCategory = "MapLayersFormats.ArcGISFeature";
19
9
  /** @internal */
20
- class EsriSLS {
21
- get color() { return colorFromArray(this.props.color); }
22
- get type() { return this.props.type; }
23
- get width() { return this.props.width; }
24
- get style() { return this.props.style; }
25
- constructor(json) {
26
- this.props = json;
27
- }
28
- static fromJSON(json) {
29
- return new EsriSLS(json);
30
- }
31
- }
32
- exports.EsriSLS = EsriSLS;
33
- /** @internal */
34
- class EsriPMS {
35
- get type() { return this.props.type; }
36
- get url() { return this.props.url; }
37
- get imageData() { return this.props.imageData; }
38
- get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }
39
- get image() { return this._image; }
40
- get contentType() { return this.props.contentType; }
41
- get width() { return this.props.width; }
42
- get height() { return this.props.height; }
43
- get xoffset() { return this.props.xoffset; }
44
- get yoffset() { return this.props.yoffset; }
45
- get angle() { return this.props.angle; }
46
- constructor(json) {
47
- this.props = json;
48
- this._image = new Image();
49
- this._image.src = this.imageUrl;
50
- }
51
- static fromJSON(json) {
52
- return new EsriPMS(json);
53
- }
54
- }
55
- exports.EsriPMS = EsriPMS;
10
+ const loggerCategory = "MapLayersFormats.ArcGISFeature";
56
11
  /** @internal */
57
- class EsriSFS {
58
- get color() { return colorFromArray(this.props.color); }
59
- get type() { return this.props.type; }
60
- get style() { return this.props.style; }
61
- get outline() { return this._outline; }
62
- constructor(json) {
63
- this.props = json;
64
- if (json.outline)
65
- this._outline = EsriSLS.fromJSON(json.outline);
66
- }
67
- static fromJSON(json) {
68
- return new EsriSFS(json);
12
+ class ArcGisSymbologyRenderer {
13
+ static create(renderer, defaultSymbol) {
14
+ if (renderer?.type === "uniqueValue") {
15
+ return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol);
16
+ }
17
+ else {
18
+ return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);
19
+ }
69
20
  }
70
21
  }
71
- exports.EsriSFS = EsriSFS;
22
+ exports.ArcGisSymbologyRenderer = ArcGisSymbologyRenderer;
72
23
  /** @internal */
73
- class ArcGisSymbologyRenderer {
74
- constructor(geometryType, rendererDefinition) {
75
- let symbol;
76
- if (rendererDefinition?.symbol !== undefined) {
77
- symbol = rendererDefinition.symbol;
24
+ class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
25
+ isAttributeDriven() { return false; }
26
+ get symbol() { return this._symbol; }
27
+ get defaultSymbol() { return this._defaultSymbol; }
28
+ constructor(renderer, defaultSymbol) {
29
+ super();
30
+ this.lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted
31
+ this._defaultSymbol = defaultSymbol;
32
+ this.renderer = renderer;
33
+ if (this.renderer?.type === "simple") {
34
+ this._symbol = this.renderer.symbol;
78
35
  }
79
- else if (rendererDefinition?.defaultSymbol !== undefined) {
80
- symbol = rendererDefinition?.defaultSymbol;
81
- }
82
- if (symbol !== undefined) {
83
- if (symbol.type === "esriSFS") {
84
- this._symbol = EsriSFS.fromJSON(symbol);
85
- }
86
- else if (symbol.type === "esriSLS") {
87
- this._symbol = EsriSLS.fromJSON(symbol);
88
- }
89
- else if (symbol.type === "esriPMS") {
90
- this._symbol = EsriPMS.fromJSON(symbol);
91
- }
92
- }
93
- // If '_symbol' is still undefined at this point, that means we could not find
94
- // any symbology definition from the metadata, let's use some default symbology
95
- // so that we display at least something.
96
- if (this._symbol === undefined) {
97
- core_bentley_1.Logger.logWarning(loggerCategory, "Symbology definition not supported, using default symbology");
98
- if (geometryType === "esriGeometryPoint" || geometryType === "esriGeometryMultipoint") {
99
- this._symbol = EsriPMS.fromJSON(ArcGisSymbologyRenderer.defaultPMS);
100
- }
101
- else if (geometryType === "esriGeometryLine" || geometryType === "esriGeometryPolyline") {
102
- this._symbol = EsriSLS.fromJSON(ArcGisSymbologyRenderer.defaultSLS);
103
- }
104
- else if (geometryType === "esriGeometryPolygon") {
105
- this._symbol = EsriSFS.fromJSON(ArcGisSymbologyRenderer.defaultSFS);
106
- }
107
- else {
108
- core_bentley_1.Logger.logError(loggerCategory, "Could not determine default symbology: geometry type not supported");
109
- }
36
+ else {
37
+ this._symbol = defaultSymbol;
110
38
  }
111
39
  }
112
40
  applyFillStyle(context) {
113
41
  if (!context)
114
42
  return;
115
- if (this._symbol?.type === "esriSFS") {
43
+ const fillColor = this.getFillColor();
44
+ if (fillColor) {
45
+ context.fillStyle = fillColor.toRgbaString();
46
+ }
47
+ else {
48
+ core_bentley_1.Logger.logTrace(loggerCategory, `Could not apply fill style`);
49
+ }
50
+ }
51
+ getFillColor() {
52
+ let fillColor;
53
+ if (this._symbol.type === "esriSFS") {
116
54
  const sfs = this._symbol;
117
- if (sfs.style === "esriSFSSolid" && sfs.color) {
118
- context.fillStyle = sfs.color.toRgbaString();
119
- }
120
- else {
121
- context.fillStyle = core_common_1.ColorDef.from(200, 0, 0, 100).toRgbaString(); // default color is red?
55
+ if (sfs.color) {
56
+ fillColor = sfs.color;
122
57
  }
123
58
  }
59
+ return fillColor;
124
60
  }
125
61
  applyStrokeStyle(context) {
126
62
  if (!context)
127
63
  return;
64
+ // Stroke style can be from SFS's outline style or a SLS's color
128
65
  let sls;
129
- if (this._symbol?.type === "esriSFS") {
66
+ if (this._symbol.type === "esriSFS") {
130
67
  const sfs = this._symbol;
131
68
  if (sfs.outline && sfs.outline.style === "esriSLSSolid") {
132
69
  sls = sfs.outline;
133
70
  }
134
71
  }
135
- else if (this._symbol?.type === "esriSLS") {
72
+ else if (this._symbol.type === "esriSLS") {
136
73
  sls = this._symbol;
137
74
  }
138
75
  if (sls) {
139
76
  if (sls.color)
140
77
  context.strokeStyle = sls.color.toRgbaString();
141
- context.lineWidth = sls.width; // TODO: Should we scale this value here?
78
+ context.lineWidth = sls.width * this.lineWidthScaleFactor;
79
+ }
80
+ else {
81
+ core_bentley_1.Logger.logTrace(loggerCategory, `Could not apply stroke style`);
142
82
  }
143
83
  }
144
84
  drawPoint(context, ptX, ptY) {
145
85
  if (!context)
146
86
  return;
147
- if (this._symbol?.type === "esriPMS") {
87
+ if (this._symbol.type === "esriPMS") {
148
88
  const pms = this._symbol;
149
89
  let xOffset = 0, yOffset = 0;
150
90
  if (pms.xoffset)
@@ -165,26 +105,46 @@ class ArcGisSymbologyRenderer {
165
105
  }
166
106
  }
167
107
  }
168
- ArcGisSymbologyRenderer.defaultPMS = {
169
- type: "esriPMS",
170
- url: "",
171
- contentType: "image/png",
172
- imageData: "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAmBJREFUOE+Nk01IVFEUx//n3jfvOZOaJkMtiiJ7o9RG3LgoqKhFSFJBTS1ahFBBi0ijfJXCIyQr+hBbSIsoW7iQoKKFCw2CkAI3tZAgy8Ei+xhoTCbnje/NPfHGnA816KzuPR+/c8/HJRQJE7o+VUhym0DcCOYGgBQEXjOLlyqo+nHanCkMoaL4rslKjZwOQLT4ek3Mmz3FACFNLB67ut6M1nWphbg8wI6VyJK5KEH0EQFVJRKbwzokAW++p/ErraAYSQK3u47bC3vLnA+ZB9i2gHF0oyQMCfCGNaUa+vauxs71wWz2V18cnBj8gQ8J1/eeBnHUa4sMFQDGdGno+4gwEAoQzjVUon3rqlx1KY9x7+0MWobjAPg3QJ2eZV4tAEyFNCN5FkSXyw2B3j1hRGvLcgBXMV5MptA4MOXr0gT0u5bZnAf0jBsyiSgJPAxqhON1K3FlRxUMvwFAtv7u0Wl0jvwEmJNEuOhakTt5wKEBifr6Oo14BIBRpgt07w6jcVMIngKGY7NofR5HwlF+zDcpsC193vyYB/innvHywCzdZfAR/+onX1segBTAxHzzfPE7/8yzzIPLjJE1LTixHZx5CtCK4gXLzovBiDPUsYxVM7gUkB3nWKlm6DYEnQGzXARxCOK+a1WfKtQXb6LNAvr7iCboCUA1Ocdsdv5KLPe7F6pH/w3wLbc+BwOuc5IZ1wEE/jonQbjptZn24tKKX7BgvR2r0NKZRwDvAqCI+Z30VJPTURv7P4A9psuQcYAUPwAoReBLrmX2Lmls7i8sZ7kWLwuoxA1FVJGxzMPLufi6P2r+2xFbOUjGAAAAAElFTkSuQmCC",
173
- width: 16,
174
- height: 16,
175
- xoffset: -8,
176
- yoffset: -16,
177
- };
178
- ArcGisSymbologyRenderer.defaultSLS = {
179
- type: "esriSLS",
180
- color: [0, 0, 0, 255],
181
- width: 1,
182
- style: "esriSLSSolid",
183
- };
184
- ArcGisSymbologyRenderer.defaultSFS = {
185
- type: "esriSFS",
186
- color: [0, 0, 0, 255],
187
- style: "esriSFSSolid",
188
- };
189
- exports.ArcGisSymbologyRenderer = ArcGisSymbologyRenderer;
108
+ exports.ArcGisSimpleSymbologyRenderer = ArcGisSimpleSymbologyRenderer;
109
+ /** @internal */
110
+ class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
111
+ isAttributeDriven() { return true; }
112
+ get rendererFields() {
113
+ if (this.uvRenderer.field1)
114
+ return [this.uvRenderer.field1];
115
+ else
116
+ return undefined;
117
+ }
118
+ constructor(renderer, defaultSymbol) {
119
+ super(renderer, defaultSymbol);
120
+ this.uvRenderer = this.renderer;
121
+ if (this.uvRenderer.defaultSymbol) {
122
+ this._defaultSymbol = this.uvRenderer.defaultSymbol;
123
+ this._symbol = this.defaultSymbol;
124
+ }
125
+ }
126
+ setActiveFeatureAttributes(attributes) {
127
+ this._activeFeatureAttributes = attributes;
128
+ let newSymbolApplied = false;
129
+ if (this._activeFeatureAttributes) {
130
+ if (this.uvRenderer.field1 && Object.keys(this._activeFeatureAttributes).includes(this.uvRenderer.field1)) {
131
+ const queryValue = this._activeFeatureAttributes[this.uvRenderer.field1];
132
+ for (const uvi of this.uvRenderer.uniqueValueInfos) {
133
+ // Strangely, ArcGIS documentation says 'value' is a string,
134
+ // not too sure if a comparison on other types is possible, or its always forced to string properties?
135
+ if (uvi.value === queryValue.toString()) {
136
+ this._symbol = uvi.symbol;
137
+ newSymbolApplied = true;
138
+ break;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ // Fallback to default symbology to make sure we render something
144
+ if (!newSymbolApplied) {
145
+ this._symbol = this.defaultSymbol;
146
+ }
147
+ }
148
+ }
149
+ exports.ArcGisUniqueValueSymbologyRenderer = ArcGisUniqueValueSymbologyRenderer;
190
150
  //# sourceMappingURL=ArcGisSymbologyRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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","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\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\r\n\r\n// Convert a channel array [r, g, b, a] to ColorDef\r\nfunction colorFromArray(channels?: number[]) {\r\n if (channels && channels.length === 4) {\r\n // Alpha channel is reversed, 255 = opaque\r\n return ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);\r\n }\r\n return undefined;\r\n}\r\n\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\n/** @internal */\r\nexport type EsriSymbolType = \"esriSFS\" | \"esriPMS\" | \"esriSLS\" | \"esriSMS\" | \"esriTS\" | \"CIMSymbolReference\";\r\ninterface EsriSymbol {\r\n type: EsriSymbolType;\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSLSStyle = \"esriSLSDash\" | \"esriSLSDashDot\" | \"esriSLSDashDotDot\" | \"esriSLSDot\" | \"esriSLSLongDash\" | \"esriSLSLongDashDot\" |\r\n\"esriSLSNull\" | \"esriSLSShortDash\" | \"esriSLSShortDashDot\" | \"esriSLSShortDashDotDot\" | \"esriSLSShortDot\" | \"esriSLSSolid\";\r\n\r\ninterface EsriSLSProps {\r\n color: number[];\r\n type: EsriSymbolType;\r\n width: number;\r\n style: EsriSLSStyle;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSLS implements EsriSymbol {\r\n public readonly props: EsriSLSProps;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get width() { return this.props.width; }\r\n public get style() { return this.props.style; }\r\n\r\n constructor(json: EsriSLSProps) {\r\n this.props = json;\r\n }\r\n\r\n public static fromJSON(json: EsriSLSProps) {\r\n return new EsriSLS(json);\r\n }\r\n}\r\n\r\ninterface EsriPMSProps {\r\n type: EsriSymbolType;\r\n url: string;\r\n imageData: string;\r\n contentType: string;\r\n width?: number;\r\n height?: number;\r\n xoffset?: number;\r\n yoffset?: number;\r\n angle?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriPMS implements EsriSymbol {\r\n public readonly props: EsriPMSProps;\r\n private _image: HTMLImageElement;\r\n\r\n public get type() { return this.props.type; }\r\n public get url() { return this.props.url; }\r\n public get imageData() { return this.props.imageData; }\r\n public get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }\r\n public get image() { return this._image; }\r\n public get contentType() { return this.props.contentType; }\r\n public get width() { return this.props.width; }\r\n public get height() { return this.props.height; }\r\n public get xoffset() { return this.props.xoffset; }\r\n public get yoffset() { return this.props.yoffset; }\r\n public get angle() { return this.props.angle; }\r\n\r\n constructor(json: EsriPMSProps) {\r\n this.props = json;\r\n this._image = new Image();\r\n this._image.src = this.imageUrl;\r\n }\r\n\r\n public static fromJSON(json: EsriPMSProps) {\r\n return new EsriPMS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSFSStyleProps = \"esriSFSBackwardDiagonal\" | \"esriSFSCross\" | \"esriSFSDiagonalCross\" | \"esriSFSForwardDiagonal\" | \"esriSFSHorizontal\" | \"esriSFSNull\" | \"esriSFSSolid\" | \"esriSFSVertical\";\r\ninterface EsriSFSProps {\r\n color?: number[];\r\n type: EsriSymbolType;\r\n style: EsriSFSStyleProps;\r\n outline?: EsriSLSProps;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSFS implements EsriSymbol {\r\n public readonly props: EsriSFSProps;\r\n private _outline: EsriSLS | undefined;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get style() { return this.props.style; }\r\n public get outline() { return this._outline; }\r\n constructor(json: EsriSFSProps) {\r\n this.props = json;\r\n if (json.outline)\r\n this._outline = EsriSLS.fromJSON(json.outline);\r\n }\r\n\r\n public static fromJSON(json: EsriSFSProps): EsriSFS {\r\n return new EsriSFS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisSymbologyRenderer {\r\n private _symbol: EsriSymbol | undefined;\r\n\r\n private static readonly defaultPMS: EsriPMSProps = {\r\n type: \"esriPMS\",\r\n url: \"\",\r\n contentType: \"image/png\",\r\n imageData: \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAmBJREFUOE+Nk01IVFEUx//n3jfvOZOaJkMtiiJ7o9RG3LgoqKhFSFJBTS1ahFBBi0ijfJXCIyQr+hBbSIsoW7iQoKKFCw2CkAI3tZAgy8Ei+xhoTCbnje/NPfHGnA816KzuPR+/c8/HJRQJE7o+VUhym0DcCOYGgBQEXjOLlyqo+nHanCkMoaL4rslKjZwOQLT4ek3Mmz3FACFNLB67ut6M1nWphbg8wI6VyJK5KEH0EQFVJRKbwzokAW++p/ErraAYSQK3u47bC3vLnA+ZB9i2gHF0oyQMCfCGNaUa+vauxs71wWz2V18cnBj8gQ8J1/eeBnHUa4sMFQDGdGno+4gwEAoQzjVUon3rqlx1KY9x7+0MWobjAPg3QJ2eZV4tAEyFNCN5FkSXyw2B3j1hRGvLcgBXMV5MptA4MOXr0gT0u5bZnAf0jBsyiSgJPAxqhON1K3FlRxUMvwFAtv7u0Wl0jvwEmJNEuOhakTt5wKEBifr6Oo14BIBRpgt07w6jcVMIngKGY7NofR5HwlF+zDcpsC193vyYB/innvHywCzdZfAR/+onX1segBTAxHzzfPE7/8yzzIPLjJE1LTixHZx5CtCK4gXLzovBiDPUsYxVM7gUkB3nWKlm6DYEnQGzXARxCOK+a1WfKtQXb6LNAvr7iCboCUA1Ocdsdv5KLPe7F6pH/w3wLbc+BwOuc5IZ1wEE/jonQbjptZn24tKKX7BgvR2r0NKZRwDvAqCI+Z30VJPTURv7P4A9psuQcYAUPwAoReBLrmX2Lmls7i8sZ7kWLwuoxA1FVJGxzMPLufi6P2r+2xFbOUjGAAAAAElFTkSuQmCC\",\r\n width: 16,\r\n height: 16,\r\n xoffset: -8,\r\n yoffset: -16,\r\n };\r\n\r\n private static readonly defaultSLS: EsriSLSProps = {\r\n type: \"esriSLS\",\r\n color: [0, 0, 0, 255],\r\n width: 1,\r\n style: \"esriSLSSolid\",\r\n };\r\n\r\n private static readonly defaultSFS: EsriSFSProps = {\r\n type: \"esriSFS\",\r\n color: [0, 0, 0, 255],\r\n style: \"esriSFSSolid\",\r\n };\r\n\r\n constructor(geometryType: ArcGisFeatureGeometryType, rendererDefinition: any) {\r\n let symbol;\r\n if (rendererDefinition?.symbol !== undefined) {\r\n symbol = rendererDefinition.symbol;\r\n } else if (rendererDefinition?.defaultSymbol !== undefined) {\r\n symbol = rendererDefinition?.defaultSymbol;\r\n }\r\n\r\n if (symbol !== undefined) {\r\n if (symbol.type === \"esriSFS\") {\r\n this._symbol = EsriSFS.fromJSON(symbol);\r\n } else if (symbol.type === \"esriSLS\") {\r\n this._symbol = EsriSLS.fromJSON(symbol);\r\n } else if (symbol.type === \"esriPMS\") {\r\n this._symbol = EsriPMS.fromJSON(symbol);\r\n }\r\n }\r\n\r\n // If '_symbol' is still undefined at this point, that means we could not find\r\n // any symbology definition from the metadata, let's use some default symbology\r\n // so that we display at least something.\r\n if (this._symbol === undefined) {\r\n Logger.logWarning(loggerCategory, \"Symbology definition not supported, using default symbology\");\r\n if (geometryType === \"esriGeometryPoint\" || geometryType === \"esriGeometryMultipoint\") {\r\n this._symbol = EsriPMS.fromJSON(ArcGisSymbologyRenderer.defaultPMS);\r\n } else if (geometryType === \"esriGeometryLine\" || geometryType === \"esriGeometryPolyline\") {\r\n this._symbol = EsriSLS.fromJSON(ArcGisSymbologyRenderer.defaultSLS);\r\n } else if (geometryType === \"esriGeometryPolygon\") {\r\n this._symbol = EsriSFS.fromJSON(ArcGisSymbologyRenderer.defaultSFS);\r\n } else {\r\n Logger.logError(loggerCategory, \"Could not determine default symbology: geometry type not supported\");\r\n }\r\n }\r\n }\r\n\r\n public applyFillStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol?.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.style === \"esriSFSSolid\" && sfs.color) {\r\n context.fillStyle = sfs.color.toRgbaString();\r\n } else {\r\n context.fillStyle = ColorDef.from(200, 0, 0, 100).toRgbaString(); // default color is red?\r\n }\r\n }\r\n }\r\n\r\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n let sls: EsriSLS | undefined;\r\n if (this._symbol?.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.outline && sfs.outline.style === \"esriSLSSolid\") {\r\n sls = sfs.outline;\r\n }\r\n } else if (this._symbol?.type === \"esriSLS\") {\r\n sls = this._symbol as EsriSLS;\r\n }\r\n\r\n if (sls) {\r\n if (sls.color)\r\n context.strokeStyle = sls.color.toRgbaString();\r\n context.lineWidth = sls.width; // TODO: Should we scale this value here?\r\n }\r\n }\r\n\r\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol?.type === \"esriPMS\") {\r\n const pms = this._symbol as EsriPMS;\r\n let xOffset = 0, yOffset = 0;\r\n if (pms.xoffset)\r\n xOffset = pms.xoffset;\r\n else if (pms.width)\r\n xOffset = pms.width * -0.5; // if no offset center in the middle\r\n\r\n if (pms.yoffset)\r\n yOffset = pms.yoffset;\r\n else if (pms.height)\r\n yOffset = pms.height * -0.5; // if no offset center in the middle\r\n\r\n if (pms.width && pms.height) {\r\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset, pms.width, pms.height);\r\n } else {\r\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset);\r\n }\r\n\r\n // TODO: marker rotation angle\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.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\nimport { Logger } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { EsriPMS, EsriRenderer, EsriSFS, EsriSimpleRenderer, EsriSLS, EsriSymbol, EsriUniqueValueRenderer } from \"./EsriSymbology\";\nimport { ArcGisAttributeDrivenSymbology } from \"@itwin/core-frontend\";\n\n/** @internal */\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\n/** @internal */\nexport type ArcGisSymbologyRendererType = \"simple\" | \"attributeDriven\";\n\n/** @internal */\nexport abstract class ArcGisSymbologyRenderer {\n public abstract isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;\n public abstract applyFillStyle(context: CanvasRenderingContext2D): void;\n public abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;\n public abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\n\n public static create(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\n if (renderer?.type === \"uniqueValue\") {\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol);\n } else {\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);\n }\n }\n}\n\n/** @internal */\nexport class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return false;}\n public lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted\n\n public get symbol() {return this._symbol;}\n public get defaultSymbol() {return this._defaultSymbol;}\n protected _symbol: EsriSymbol;\n protected _defaultSymbol: EsriSymbol;\n\n public readonly renderer?: EsriRenderer;\n\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\n super();\n this._defaultSymbol = defaultSymbol;\n this.renderer = renderer;\n\n if (this.renderer?.type === \"simple\") {\n this._symbol = (this.renderer as EsriSimpleRenderer).symbol;\n } else {\n this._symbol = defaultSymbol;\n }\n\n }\n\n public applyFillStyle(context: CanvasRenderingContext2D) {\n if (!context)\n return;\n\n const fillColor = this.getFillColor();\n if (fillColor) {\n context.fillStyle = fillColor.toRgbaString();\n } else {\n Logger.logTrace(loggerCategory, `Could not apply fill style`);\n }\n }\n\n private getFillColor() {\n let fillColor: ColorDef | undefined;\n if (this._symbol.type === \"esriSFS\") {\n const sfs = this._symbol as EsriSFS;\n if (sfs.color) {\n fillColor = sfs.color;\n }\n }\n\n return fillColor;\n }\n\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\n if (!context)\n return;\n\n // Stroke style can be from SFS's outline style or a SLS's color\n let sls: EsriSLS | undefined;\n if (this._symbol.type === \"esriSFS\") {\n const sfs = this._symbol as EsriSFS;\n if (sfs.outline && sfs.outline.style === \"esriSLSSolid\") {\n sls = sfs.outline;\n }\n } else if (this._symbol.type === \"esriSLS\") {\n sls = this._symbol as EsriSLS;\n }\n\n if (sls) {\n if (sls.color)\n context.strokeStyle = sls.color.toRgbaString();\n context.lineWidth = sls.width * this.lineWidthScaleFactor;\n } else {\n Logger.logTrace(loggerCategory, `Could not apply stroke style`);\n }\n\n }\n\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\n if (!context)\n return;\n\n if (this._symbol.type === \"esriPMS\") {\n const pms = this._symbol as EsriPMS;\n let xOffset = 0, yOffset = 0;\n if (pms.xoffset)\n xOffset = pms.xoffset;\n else if (pms.width)\n xOffset = pms.width * -0.5; // if no offset center in the middle\n\n if (pms.yoffset)\n yOffset = pms.yoffset;\n else if (pms.height)\n yOffset = pms.height * -0.5; // if no offset center in the middle\n\n if (pms.width && pms.height) {\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset, pms.width, pms.height);\n } else {\n context.drawImage(pms.image, ptX + xOffset, ptY + yOffset);\n }\n\n // TODO: marker rotation angle\n }\n }\n}\n\n/** @internal */\nexport class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected uvRenderer: EsriUniqueValueRenderer;\n\n public get rendererFields() {\n if (this.uvRenderer.field1)\n return [this.uvRenderer.field1];\n else\n return undefined;\n }\n\n public constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: EsriSymbol) {\n super(renderer, defaultSymbol);\n\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\n if (this.uvRenderer.defaultSymbol) {\n this._defaultSymbol = this.uvRenderer.defaultSymbol;\n this._symbol = this.defaultSymbol;\n }\n }\n\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\n this._activeFeatureAttributes = attributes;\n\n let newSymbolApplied = false;\n if (this._activeFeatureAttributes) {\n if (this.uvRenderer.field1 && Object.keys(this._activeFeatureAttributes).includes(this.uvRenderer.field1)) {\n\n const queryValue = this._activeFeatureAttributes[this.uvRenderer.field1];\n\n for (const uvi of this.uvRenderer.uniqueValueInfos) {\n // Strangely, ArcGIS documentation says 'value' is a string,\n // not too sure if a comparison on other types is possible, or its always forced to string properties?\n if (uvi.value === queryValue.toString()) {\n this._symbol = uvi.symbol;\n newSymbolApplied = true;\n break;\n }\n }\n }\n }\n\n // Fallback to default symbology to make sure we render something\n if (!newSymbolApplied) {\n this._symbol = this.defaultSymbol;\n }\n }\n}\n"]}
@@ -0,0 +1,152 @@
1
+ import { ColorDef } from "@itwin/core-common";
2
+ /** @internal */
3
+ export type EsriSymbolPropsType = "esriSFS" | "esriPMS" | "esriSLS" | "esriSMS" | "esriTS" | "CIMSymbolReference";
4
+ /** @internal */
5
+ export interface EsriSymbolCommonProps {
6
+ type: EsriSymbolPropsType;
7
+ }
8
+ /** @internal */
9
+ export type EsriSymbolProps = EsriSLSProps | EsriPMSProps | EsriSFSProps;
10
+ /** @internal */
11
+ export declare abstract class EsriSymbol implements EsriSymbolCommonProps {
12
+ abstract readonly type: EsriSymbolPropsType;
13
+ static fromJSON(props: EsriSymbolProps): EsriSFS | EsriSLS | EsriPMS;
14
+ }
15
+ /** @internal */
16
+ export type EsriSLSStyle = "esriSLSDash" | "esriSLSDashDot" | "esriSLSDashDotDot" | "esriSLSDot" | "esriSLSLongDash" | "esriSLSLongDashDot" | "esriSLSNull" | "esriSLSShortDash" | "esriSLSShortDashDot" | "esriSLSShortDashDotDot" | "esriSLSShortDot" | "esriSLSSolid";
17
+ /** @internal */
18
+ export interface EsriSLSProps extends EsriSymbolCommonProps {
19
+ color: number[];
20
+ type: EsriSymbolPropsType;
21
+ width: number;
22
+ style: EsriSLSStyle;
23
+ }
24
+ /** @internal */
25
+ export declare class EsriSLS implements EsriSymbolCommonProps {
26
+ readonly props: EsriSLSProps;
27
+ get color(): ColorDef | undefined;
28
+ get type(): EsriSymbolPropsType;
29
+ get width(): number;
30
+ get style(): EsriSLSStyle;
31
+ constructor(json: EsriSLSProps);
32
+ static fromJSON(json: EsriSLSProps): EsriSLS;
33
+ }
34
+ /** @internal */
35
+ export interface EsriPMSProps extends EsriSymbolCommonProps {
36
+ type: EsriSymbolPropsType;
37
+ url: string;
38
+ imageData: string;
39
+ contentType: string;
40
+ width?: number;
41
+ height?: number;
42
+ xoffset?: number;
43
+ yoffset?: number;
44
+ angle?: number;
45
+ }
46
+ /** @internal */
47
+ export declare class EsriPMS implements EsriSymbolCommonProps {
48
+ readonly props: EsriPMSProps;
49
+ private _image;
50
+ get type(): EsriSymbolPropsType;
51
+ get url(): string;
52
+ get imageData(): string;
53
+ get imageUrl(): string;
54
+ get image(): HTMLImageElement;
55
+ get contentType(): string;
56
+ get width(): number | undefined;
57
+ get height(): number | undefined;
58
+ get xoffset(): number | undefined;
59
+ get yoffset(): number | undefined;
60
+ get angle(): number | undefined;
61
+ loadImage(): Promise<void>;
62
+ private constructor();
63
+ static fromJSON(json: EsriPMSProps): EsriPMS;
64
+ }
65
+ /** @internal */
66
+ export type EsriSFSStyleProps = "esriSFSBackwardDiagonal" | "esriSFSCross" | "esriSFSDiagonalCross" | "esriSFSForwardDiagonal" | "esriSFSHorizontal" | "esriSFSNull" | "esriSFSSolid" | "esriSFSVertical";
67
+ /** @internal */
68
+ export interface EsriSFSProps {
69
+ color?: number[];
70
+ type: EsriSymbolPropsType;
71
+ style: EsriSFSStyleProps;
72
+ outline?: EsriSLSProps;
73
+ }
74
+ /** @internal */
75
+ export declare class EsriSFS implements EsriSymbolCommonProps {
76
+ readonly props: EsriSFSProps;
77
+ private _outline;
78
+ get color(): ColorDef | undefined;
79
+ get type(): EsriSymbolPropsType;
80
+ get style(): EsriSFSStyleProps;
81
+ get outline(): EsriSLS | undefined;
82
+ constructor(json: EsriSFSProps);
83
+ static fromJSON(json: EsriSFSProps): EsriSFS;
84
+ }
85
+ /** @internal */
86
+ export interface EsriUniqueValueInfoProps {
87
+ value: string;
88
+ label?: string;
89
+ description?: string;
90
+ symbol: EsriSymbolProps;
91
+ }
92
+ /** @internal */
93
+ export declare class EsriUniqueValueInfo {
94
+ readonly value: string;
95
+ readonly label: string | undefined;
96
+ readonly description: string | undefined;
97
+ readonly symbol: EsriSymbol;
98
+ private constructor();
99
+ static fromJSON(json: EsriUniqueValueInfoProps): EsriUniqueValueInfo;
100
+ }
101
+ /** @internal */
102
+ export interface EsriRendererBaseProps {
103
+ type: EsriRendererType;
104
+ }
105
+ /** @internal */
106
+ export interface EsriSimpleRendererProps extends EsriRendererBaseProps {
107
+ symbol: EsriSymbolProps;
108
+ }
109
+ /** @internal */
110
+ export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
111
+ symbol?: EsriSymbolProps;
112
+ }
113
+ /** @internal */
114
+ export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
115
+ field1?: string;
116
+ field2?: string;
117
+ field3?: string;
118
+ defaultSymbol?: EsriSymbolProps;
119
+ uniqueValueInfos: EsriUniqueValueInfoProps[];
120
+ }
121
+ /** @internal */
122
+ export type EsriRendererType = "simple" | "uniqueValue";
123
+ /** @internal */
124
+ export type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps;
125
+ /** @internal */
126
+ export declare abstract class EsriRenderer {
127
+ abstract readonly type: EsriRendererType;
128
+ abstract initialize(): Promise<void>;
129
+ static fromJSON(json: EsriRendererProps): EsriRenderer;
130
+ }
131
+ /** @internal */
132
+ export declare class EsriSimpleRenderer extends EsriRenderer {
133
+ readonly type: EsriRendererType;
134
+ readonly symbol: EsriSymbol;
135
+ protected constructor(json: EsriSimpleRendererProps);
136
+ initialize(): Promise<void>;
137
+ static fromJSON(json: EsriSimpleRendererProps): EsriSimpleRenderer;
138
+ }
139
+ /** @internal */
140
+ export declare class EsriUniqueValueRenderer extends EsriRenderer {
141
+ private _props;
142
+ readonly type: EsriRendererType;
143
+ readonly defaultSymbol?: EsriSymbol;
144
+ readonly uniqueValueInfos: EsriUniqueValueInfo[];
145
+ get field1(): string | undefined;
146
+ get field2(): string | undefined;
147
+ get field3(): string | undefined;
148
+ protected constructor(json: EsriUniqueValueRendererProps);
149
+ initialize(): Promise<void>;
150
+ static fromJSON(json: EsriUniqueValueRendererProps): EsriUniqueValueRenderer;
151
+ }
152
+ //# sourceMappingURL=EsriSymbology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EsriSymbology.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/EsriSymbology.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW9C,gBAAgB;AAChB,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,oBAAoB,CAAC;AAElH,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAEzE,gBAAgB;AAChB,8BAAsB,UAAW,YAAW,qBAAqB;IAC/D,kBAAyB,IAAI,EAAE,mBAAmB,CAAC;WAErC,QAAQ,CAAC,KAAK,EAAE,eAAe;CAU9C;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,YAAY,GAAG,iBAAiB,GAAG,oBAAoB,GAC3I,aAAa,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE3H,gBAAgB;AAChB,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IAEpC,IAAW,KAAK,yBAA+C;IAC/D,IAAW,IAAI,wBAA8B;IAC7C,IAAW,KAAK,WAA+B;IAC/C,IAAW,KAAK,iBAA+B;gBAEnC,IAAI,EAAE,YAAY;WAIhB,QAAQ,CAAC,IAAI,EAAE,YAAY;CAG1C;AAED,gBAAgB;AAChB,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,MAAM,CAA6B;IAE3C,IAAW,IAAI,wBAA8B;IAC7C,IAAW,GAAG,WAA6B;IAC3C,IAAW,SAAS,WAAmC;IACvD,IAAW,QAAQ,WAAkE;IACrF,IAAW,KAAK,qBAGf;IACD,IAAW,WAAW,WAAqC;IAC3D,IAAW,KAAK,uBAA+B;IAC/C,IAAW,MAAM,uBAAgC;IACjD,IAAW,OAAO,uBAAiC;IACnD,IAAW,OAAO,uBAAiC;IACnD,IAAW,KAAK,uBAA+B;IAElC,SAAS;IAgBtB,OAAO;WAIO,QAAQ,CAAC,IAAI,EAAE,YAAY;CAG1C;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,cAAc,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAE1M,gBAAgB;AAChB,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,IAAW,KAAK,yBAA+C;IAC/D,IAAW,IAAI,wBAA8B;IAC7C,IAAW,KAAK,sBAA+B;IAC/C,IAAW,OAAO,wBAA4B;gBAClC,IAAI,EAAE,YAAY;WAMhB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;CAGpD;AAED,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,gBAAgB;AAChB,qBAAa,mBAAmB;IAE9B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,KAAK,EAAE,MAAM,GAAC,SAAS,CAAC;IACxC,SAAgB,WAAW,EAAE,MAAM,GAAC,SAAS,CAAC;IAC9C,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC,OAAO;WAOO,QAAQ,CAAC,IAAI,EAAE,wBAAwB;CAGtD;AAED,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,gBAAgB;AAChB,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,gBAAgB;AAChB,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;CAC9C;AAED,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,aAAa,CAAC;AAExD,gBAAgB;AAChB,MAAM,MAAO,iBAAiB,GAAG,uBAAuB,GAAG,4BAA4B,CAAC;AAExF,gBAAgB;AAChB,8BAAsB,YAAY;IAChC,kBAAyB,IAAI,EAAE,gBAAgB,CAAC;aAChC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;WAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY;CAQ9D;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,SAAgB,IAAI,EAAE,gBAAgB,CAAY;IAClD,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC,SAAS,aAAa,IAAI,EAAE,uBAAuB;IAKtC,UAAU;WAQA,QAAQ,CAAC,IAAI,EAAE,uBAAuB;CAG9D;AAED,gBAAgB;AAChB,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAA+B;IAC7C,SAAgB,IAAI,EAAE,gBAAgB,CAAiB;IACvD,SAAgB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3C,SAAgB,gBAAgB,EAAE,mBAAmB,EAAE,CAAM;IAE7D,IAAW,MAAM,uBAA8C;IAC/D,IAAW,MAAM,uBAA8C;IAC/D,IAAW,MAAM,uBAA8C;IAE/D,SAAS,aAAa,IAAI,EAAE,4BAA4B;IAWlC,UAAU;WAaT,QAAQ,CAAC,IAAI,EAAE,4BAA4B;CAGnE"}
@@ -0,0 +1,181 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.EsriUniqueValueRenderer = exports.EsriSimpleRenderer = exports.EsriRenderer = exports.EsriUniqueValueInfo = exports.EsriSFS = exports.EsriPMS = exports.EsriSLS = exports.EsriSymbol = void 0;
8
+ const core_bentley_1 = require("@itwin/core-bentley");
9
+ const core_common_1 = require("@itwin/core-common");
10
+ // Convert a channel array [r, g, b, a] to ColorDef
11
+ function colorFromArray(channels) {
12
+ if (channels && channels.length === 4) {
13
+ // Alpha channel is reversed, 255 = opaque
14
+ return core_common_1.ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);
15
+ }
16
+ return undefined;
17
+ }
18
+ /** @internal */
19
+ class EsriSymbol {
20
+ static fromJSON(props) {
21
+ if (props.type === "esriSFS") {
22
+ return EsriSFS.fromJSON(props);
23
+ }
24
+ else if (props.type === "esriSLS") {
25
+ return EsriSLS.fromJSON(props);
26
+ }
27
+ else if (props.type === "esriPMS") {
28
+ return EsriPMS.fromJSON(props);
29
+ }
30
+ throw new Error("Unknown ESRI symbology type");
31
+ }
32
+ }
33
+ exports.EsriSymbol = EsriSymbol;
34
+ /** @internal */
35
+ class EsriSLS {
36
+ get color() { return colorFromArray(this.props.color); }
37
+ get type() { return this.props.type; }
38
+ get width() { return this.props.width; }
39
+ get style() { return this.props.style; }
40
+ constructor(json) {
41
+ this.props = json;
42
+ }
43
+ static fromJSON(json) {
44
+ return new EsriSLS(json);
45
+ }
46
+ }
47
+ exports.EsriSLS = EsriSLS;
48
+ /** @internal */
49
+ class EsriPMS {
50
+ get type() { return this.props.type; }
51
+ get url() { return this.props.url; }
52
+ get imageData() { return this.props.imageData; }
53
+ get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }
54
+ get image() {
55
+ (0, core_bentley_1.assert)(this._image !== undefined);
56
+ return this._image;
57
+ }
58
+ get contentType() { return this.props.contentType; }
59
+ get width() { return this.props.width; }
60
+ get height() { return this.props.height; }
61
+ get xoffset() { return this.props.xoffset; }
62
+ get yoffset() { return this.props.yoffset; }
63
+ get angle() { return this.props.angle; }
64
+ async loadImage() {
65
+ if (this._image === undefined) {
66
+ this._image = new Image();
67
+ return new Promise((resolve, reject) => {
68
+ if (this._image) {
69
+ this._image.addEventListener("load", () => {
70
+ resolve();
71
+ });
72
+ this._image.src = this.imageUrl;
73
+ }
74
+ else
75
+ reject(new Error("Failed to load image"));
76
+ });
77
+ }
78
+ }
79
+ constructor(json) {
80
+ this.props = json;
81
+ }
82
+ static fromJSON(json) {
83
+ return new EsriPMS(json);
84
+ }
85
+ }
86
+ exports.EsriPMS = EsriPMS;
87
+ /** @internal */
88
+ class EsriSFS {
89
+ get color() { return colorFromArray(this.props.color); }
90
+ get type() { return this.props.type; }
91
+ get style() { return this.props.style; }
92
+ get outline() { return this._outline; }
93
+ constructor(json) {
94
+ this.props = json;
95
+ if (json.outline)
96
+ this._outline = EsriSLS.fromJSON(json.outline);
97
+ }
98
+ static fromJSON(json) {
99
+ return new EsriSFS(json);
100
+ }
101
+ }
102
+ exports.EsriSFS = EsriSFS;
103
+ /** @internal */
104
+ class EsriUniqueValueInfo {
105
+ constructor(json) {
106
+ this.value = json.value;
107
+ this.label = json.label;
108
+ this.description = json.description;
109
+ this.symbol = EsriSymbol.fromJSON(json.symbol);
110
+ }
111
+ static fromJSON(json) {
112
+ return new EsriUniqueValueInfo(json);
113
+ }
114
+ }
115
+ exports.EsriUniqueValueInfo = EsriUniqueValueInfo;
116
+ /** @internal */
117
+ class EsriRenderer {
118
+ static fromJSON(json) {
119
+ if (json.type === "simple")
120
+ return EsriSimpleRenderer.fromJSON(json);
121
+ else if (json.type === "uniqueValue")
122
+ return EsriUniqueValueRenderer.fromJSON(json);
123
+ else
124
+ throw Error("Unknown renderer type");
125
+ }
126
+ }
127
+ exports.EsriRenderer = EsriRenderer;
128
+ /** @internal */
129
+ class EsriSimpleRenderer extends EsriRenderer {
130
+ constructor(json) {
131
+ super();
132
+ this.type = "simple";
133
+ this.type = json.type;
134
+ this.symbol = EsriSymbol.fromJSON(json.symbol);
135
+ }
136
+ async initialize() {
137
+ const promises = [];
138
+ if (this.symbol.type === "esriPMS") {
139
+ promises.push(this.symbol.loadImage());
140
+ }
141
+ await Promise.all(promises);
142
+ }
143
+ static fromJSON(json) {
144
+ return new EsriSimpleRenderer(json);
145
+ }
146
+ }
147
+ exports.EsriSimpleRenderer = EsriSimpleRenderer;
148
+ /** @internal */
149
+ class EsriUniqueValueRenderer extends EsriRenderer {
150
+ get field1() { return this._props.field1 ?? undefined; }
151
+ get field2() { return this._props.field2 ?? undefined; }
152
+ get field3() { return this._props.field3 ?? undefined; }
153
+ constructor(json) {
154
+ super();
155
+ this.type = "uniqueValue";
156
+ this.uniqueValueInfos = [];
157
+ if (json.defaultSymbol)
158
+ this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);
159
+ for (const uvi of json.uniqueValueInfos) {
160
+ this.uniqueValueInfos.push(EsriUniqueValueInfo.fromJSON(uvi));
161
+ }
162
+ this._props = json;
163
+ }
164
+ async initialize() {
165
+ const promises = [];
166
+ if (this.defaultSymbol?.type === "esriPMS") {
167
+ promises.push(this.defaultSymbol.loadImage());
168
+ }
169
+ for (const uvi of this.uniqueValueInfos) {
170
+ if (uvi.symbol.type === "esriPMS") {
171
+ promises.push(uvi.symbol.loadImage());
172
+ }
173
+ }
174
+ await Promise.all(promises);
175
+ }
176
+ static fromJSON(json) {
177
+ return new EsriUniqueValueRenderer(json);
178
+ }
179
+ }
180
+ exports.EsriUniqueValueRenderer = EsriUniqueValueRenderer;
181
+ //# sourceMappingURL=EsriSymbology.js.map