@arcgis/core 5.2.0-next.80 → 5.2.0-next.82

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 (495) hide show
  1. package/applications/Components/imageryUtils.d.ts +5 -3
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/004966b5bf60a8a80b8c.js +1 -0
  4. package/assets/esri/core/workers/chunks/027af54888befb209aaa.js +1 -0
  5. package/assets/esri/core/workers/chunks/03cf74b2e488eb144ad5.js +1 -0
  6. package/assets/esri/core/workers/chunks/{913fb883455aeac8582b.js → 04f5ff688785a4bd3b03.js} +1 -1
  7. package/assets/esri/core/workers/chunks/055802283f7e01ee87fb.js +1 -0
  8. package/assets/esri/core/workers/chunks/06df9ce870360cda06c7.js +1 -0
  9. package/assets/esri/core/workers/chunks/{08ec5461af74356e7570.js → 075eb62465edb9cbf907.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{5fe9eea35ddb428efd8b.js → 0b26c01a1190e8fd63fb.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{24729603dcdbd95fd01e.js → 0d982abff7c9496f7890.js} +1 -1
  12. package/assets/esri/core/workers/chunks/0fd7590e545864f5fff4.js +1 -0
  13. package/assets/esri/core/workers/chunks/{b9d1bb106737a05290e1.js → 104d74bc36c28c519396.js} +1 -1
  14. package/assets/esri/core/workers/chunks/10ac92dcd3738ec23dfb.js +1 -0
  15. package/assets/esri/core/workers/chunks/11d911f70bf0ca252c19.js +1 -0
  16. package/assets/esri/core/workers/chunks/1352b5c6767e5421bc02.js +1 -0
  17. package/assets/esri/core/workers/chunks/1354b8442c2c501238f1.js +1 -0
  18. package/assets/esri/core/workers/chunks/1438f571f738e83b4d1c.js +1 -0
  19. package/assets/esri/core/workers/chunks/14469f664fd5ede469fc.js +1 -0
  20. package/assets/esri/core/workers/chunks/14511c92cbbc26d80c86.js +1 -0
  21. package/assets/esri/core/workers/chunks/14be79c4cc6137c7db95.js +1 -0
  22. package/assets/esri/core/workers/chunks/{ef47a5da641cb0d33fdf.js → 197a6d561f77ac74283a.js} +1 -1
  23. package/assets/esri/core/workers/chunks/19dac19122eeeb5e36b2.js +1 -0
  24. package/assets/esri/core/workers/chunks/{e4e5a171a4874c5af4a4.js → 1a7d2912c8eac8c83c70.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{b9c61b20bbc91cb63036.js → 1c3861297f65ee1ca5d0.js} +1 -1
  26. package/assets/esri/core/workers/chunks/1d1cfe0bee506d34268e.js +1 -0
  27. package/assets/esri/core/workers/chunks/20db27d9828397d0b37a.js +1 -0
  28. package/assets/esri/core/workers/chunks/2161cf64601f28bbe72d.js +1 -0
  29. package/assets/esri/core/workers/chunks/218ddad849745d652a28.js +1 -0
  30. package/assets/esri/core/workers/chunks/{5b70295da76d9227f64b.js → 22c477147421e68f7f00.js} +1 -1
  31. package/assets/esri/core/workers/chunks/24944b625ed8dcd904f0.js +1 -0
  32. package/assets/esri/core/workers/chunks/25696c194457e42b3bdc.js +1 -0
  33. package/assets/esri/core/workers/chunks/25f6d5604a7959afd5a5.js +1 -0
  34. package/assets/esri/core/workers/chunks/26c12804a0d801df29bf.js +1 -0
  35. package/assets/esri/core/workers/chunks/{67ebde34377f98d17cda.js → 26c8ed0aef59ed6d5267.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{c1e5ffe9a251be5a0744.js → 278760d194203dd27fc3.js} +1 -1
  37. package/assets/esri/core/workers/chunks/28b576663ed4570ec825.js +1 -0
  38. package/assets/esri/core/workers/chunks/{841c81c280114412c95b.js → 2a4c91b006de1ceba539.js} +1 -1
  39. package/assets/esri/core/workers/chunks/2b299aec2a758bcd9731.js +1 -0
  40. package/assets/esri/core/workers/chunks/2d1c0d80a9843567df8d.js +1 -0
  41. package/assets/esri/core/workers/chunks/{b084829a3fd709dc47a8.js → 2d683ac4a993ec5fd6f6.js} +1 -1
  42. package/assets/esri/core/workers/chunks/2d6e1bf7c1981bed4357.js +1 -0
  43. package/assets/esri/core/workers/chunks/{a8ec5b85c2fa6fb4f391.js → 30b40ee875d46e6fde02.js} +1 -1
  44. package/assets/esri/core/workers/chunks/31b3744f71750e512d4e.js +1 -0
  45. package/assets/esri/core/workers/chunks/3239c7994019f15e261d.js +1 -0
  46. package/assets/esri/core/workers/chunks/{d520d407043bc52e5410.js → 3336ad383c184dd07bb3.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{c29df43817278f674707.js → 33aaa5a49e396a0aca47.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{7529c0fcfb83998e63db.js → 34f6093d2c00e3584037.js} +1 -1
  49. package/assets/esri/core/workers/chunks/36265e5f6d396eadf0be.js +1 -0
  50. package/assets/esri/core/workers/chunks/{0ae0483b72f5e8d00d55.js → 3715d6b295016eeb5031.js} +1 -1
  51. package/assets/esri/core/workers/chunks/3851ebf3548e2763b24f.js +1 -0
  52. package/assets/esri/core/workers/chunks/3a4b117af89dab5153eb.js +1 -0
  53. package/assets/esri/core/workers/chunks/3a9ef47122e10cecd3a4.js +1 -0
  54. package/assets/esri/core/workers/chunks/3f0625c31dd46b563160.js +1 -0
  55. package/assets/esri/core/workers/chunks/40b842d055b87e442156.js +1 -0
  56. package/assets/esri/core/workers/chunks/{c37b28f200b704ae6002.js → 4239d64f067417e0643c.js} +1 -1
  57. package/assets/esri/core/workers/chunks/43122c435497228a7583.js +1 -0
  58. package/assets/esri/core/workers/chunks/44d13f65465646e5f6e9.js +1 -0
  59. package/assets/esri/core/workers/chunks/463b7952a4825541eb13.js +1 -0
  60. package/assets/esri/core/workers/chunks/{345510a95e893fa8040a.js → 469e72ab6cd44272f474.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{bd88228f781a0399d8bd.js → 49e37f653b81f9e4f7cc.js} +1 -1
  62. package/assets/esri/core/workers/chunks/4c5200e22b8a723f53f9.js +1 -0
  63. package/assets/esri/core/workers/chunks/4cf2c33494cb75942511.js +1 -0
  64. package/assets/esri/core/workers/chunks/{2bcb7e43578124538c3c.js → 4d672110aee304692f60.js} +1 -1
  65. package/assets/esri/core/workers/chunks/4f36596280142be1c666.js +1 -0
  66. package/assets/esri/core/workers/chunks/50e6e43ea98cb0d05d91.js +1 -0
  67. package/assets/esri/core/workers/chunks/{8e374ce47256a567ae11.js → 519745cf844c76452a46.js} +1 -1
  68. package/assets/esri/core/workers/chunks/52042fd36f4a572938f0.js +1 -0
  69. package/assets/esri/core/workers/chunks/{3b14ed3184743df336a6.js → 53d80202b5f43542d45b.js} +1 -1
  70. package/assets/esri/core/workers/chunks/54524cc4328f31d8c25d.js +1 -0
  71. package/assets/esri/core/workers/chunks/5515005e8893bd551aaf.js +1 -0
  72. package/assets/esri/core/workers/chunks/563a4d6788ad66b676e4.js +1 -0
  73. package/assets/esri/core/workers/chunks/{eee1fd629619021ea279.js → 56a6c7abfb4d88ea1bb5.js} +1 -1
  74. package/assets/esri/core/workers/chunks/58d10928959ae1e2e8d9.js +1 -0
  75. package/assets/esri/core/workers/chunks/598221c7054415b84904.js +1 -0
  76. package/assets/esri/core/workers/chunks/59f0a2bd40b033ce77e4.js +1 -0
  77. package/assets/esri/core/workers/chunks/{38660a8cc3623c854d88.js → 5a006ff759fad9fc25cb.js} +1 -1
  78. package/assets/esri/core/workers/chunks/{087bd698b80ca0cea71e.js → 5aadfd11df6618883c5d.js} +1 -1
  79. package/assets/esri/core/workers/chunks/5b60fc95757b2a53558a.js +1 -0
  80. package/assets/esri/core/workers/chunks/5c634b3e6dc76299b1df.js +1 -0
  81. package/assets/esri/core/workers/chunks/5d30accf1dcda0c70f95.js +1 -0
  82. package/assets/esri/core/workers/chunks/605da92d28e067f4a4c6.js +1 -0
  83. package/assets/esri/core/workers/chunks/61f230e50787abbfc8ba.js +1 -0
  84. package/assets/esri/core/workers/chunks/6270acb7545be2c5126f.js +1 -0
  85. package/assets/esri/core/workers/chunks/{f3bbebedad51f776bb98.js → 62992c3d98c20f611b7b.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{ac87be2210f868524996.js → 629f60ee49e0dcfb7165.js} +1 -1
  87. package/assets/esri/core/workers/chunks/645d5db85f84b1f19b59.js +1 -0
  88. package/assets/esri/core/workers/chunks/{1f888f026b004447772c.js → 657528eb6a3d3b3cb631.js} +1 -1
  89. package/assets/esri/core/workers/chunks/66292e98b4111ea3658d.js +1 -0
  90. package/assets/esri/core/workers/chunks/680496660b2aaa710099.js +1 -0
  91. package/assets/esri/core/workers/chunks/{ee63c693f2539f3bfa17.js → 6c389e9646a48c26da20.js} +2 -2
  92. package/assets/esri/core/workers/chunks/{2d1ae18a28491b00091d.js → 6db4a4f9a9ce7cc738d0.js} +1 -1
  93. package/assets/esri/core/workers/chunks/6eb28086dc28f6d144ec.js +1 -0
  94. package/assets/esri/core/workers/chunks/{702b2381acf4d1f90094.js → 6f08c8a1e8e3ffd0a96a.js} +1 -1
  95. package/assets/esri/core/workers/chunks/6f4ee60e89d154e7b1c4.js +1 -0
  96. package/assets/esri/core/workers/chunks/7230d74ef720431cc75e.js +1 -0
  97. package/assets/esri/core/workers/chunks/73a8a3baf0fed803ef4f.js +1 -0
  98. package/assets/esri/core/workers/chunks/{4d7a3b3aaf876da0891b.js → 76e6d894c33221369895.js} +1 -1
  99. package/assets/esri/core/workers/chunks/7833a82d5bac2aed565e.js +1 -0
  100. package/assets/esri/core/workers/chunks/7a05f5b0848dd11d2f4f.js +1 -0
  101. package/assets/esri/core/workers/chunks/{4c82f5f23004f905a18f.js → 7b605ed92e65083da35f.js} +1 -1
  102. package/assets/esri/core/workers/chunks/7bd8ebb321ecf1f06496.js +1 -0
  103. package/assets/esri/core/workers/chunks/7d5877eede2f552dea9f.js +1 -0
  104. package/assets/esri/core/workers/chunks/7eb94fc75926bc739233.js +1 -0
  105. package/assets/esri/core/workers/chunks/809349086117f199b7a5.js +1 -0
  106. package/assets/esri/core/workers/chunks/82e62a54b350e7a325f7.js +1 -0
  107. package/assets/esri/core/workers/chunks/836c458a7eb96391cfda.js +1 -0
  108. package/assets/esri/core/workers/chunks/83a77d3f45c8c21cec45.js +1 -0
  109. package/assets/esri/core/workers/chunks/851a5a0262dc8dcb67eb.js +1 -0
  110. package/assets/esri/core/workers/chunks/865f9adc591056458b6b.js +1 -0
  111. package/assets/esri/core/workers/chunks/88771a75adcbd54c4fac.js +1 -0
  112. package/assets/esri/core/workers/chunks/8c6a60d96c73982febd2.js +1 -0
  113. package/assets/esri/core/workers/chunks/{619aa1381296172ff47b.js → 8e19b2ce9868a9a08da0.js} +1 -1
  114. package/assets/esri/core/workers/chunks/8ea28a4b1afe8bb2d313.js +1 -0
  115. package/assets/esri/core/workers/chunks/911f3a1b8dd4bc5c9782.js +1 -0
  116. package/assets/esri/core/workers/chunks/{40693ee558a1eb1e93f4.js → 918577ea025f67ebe372.js} +1 -1
  117. package/assets/esri/core/workers/chunks/{fe71a0604f0928113419.js → 958e161634b5bfd50625.js} +1 -1
  118. package/assets/esri/core/workers/chunks/95ff342e5c29bf91a765.js +1 -0
  119. package/assets/esri/core/workers/chunks/97162bbbedb02e42d0b8.js +1 -0
  120. package/assets/esri/core/workers/chunks/{680dd7b7638465eb33de.js → 98739b6e7904045edbab.js} +1 -1
  121. package/assets/esri/core/workers/chunks/99966339b061eb9945b8.js +1 -0
  122. package/assets/esri/core/workers/chunks/9aa41d098eeda01ded3a.js +1 -0
  123. package/assets/esri/core/workers/chunks/{315031323e11a18154e3.js → 9c04233d18a9585b5bfe.js} +1 -1
  124. package/assets/esri/core/workers/chunks/9c7afe90495766bba37f.js +1 -0
  125. package/assets/esri/core/workers/chunks/{69b9a327f23e052fced7.js → 9d5d7289a9e23efc7f73.js} +1 -1
  126. package/assets/esri/core/workers/chunks/9e49a6ce4a133476092f.js +1 -0
  127. package/assets/esri/core/workers/chunks/9e840a71906c4deef776.js +1 -0
  128. package/assets/esri/core/workers/chunks/a1bf2111fee455b16e6a.js +29 -0
  129. package/assets/esri/core/workers/chunks/{910c93bbbf8113a4a51f.js → a2a231a671ff578b7b01.js} +1 -1
  130. package/assets/esri/core/workers/chunks/a2fd945659ce052f99d2.js +1 -0
  131. package/assets/esri/core/workers/chunks/{16929524565a677db4dc.js → a406a41a2f117247f1ef.js} +1 -1
  132. package/assets/esri/core/workers/chunks/a4b63162615a485b08dc.js +1 -0
  133. package/assets/esri/core/workers/chunks/a9a1061cdf82b372835f.js +1 -0
  134. package/assets/esri/core/workers/chunks/ab10388dcc17a665ac3b.js +2 -0
  135. package/assets/esri/core/workers/chunks/ac9a3dfd02160e43fc8a.js +2 -0
  136. package/assets/esri/core/workers/chunks/af88f8dd1a53e4740aa6.js +1 -0
  137. package/assets/esri/core/workers/chunks/{2b3f76e03b7a28fc4453.js → b09e9ac5fd928e69b053.js} +1 -1
  138. package/assets/esri/core/workers/chunks/{6c982779d6d47ec99899.js → b0a9a770b735440846cd.js} +1 -1
  139. package/assets/esri/core/workers/chunks/b2d6fd436981c890152f.js +1 -0
  140. package/assets/esri/core/workers/chunks/b3034fbcbe77ef9e7c20.js +1 -0
  141. package/assets/esri/core/workers/chunks/b4b4fe06364bea9b0750.js +1 -0
  142. package/assets/esri/core/workers/chunks/b661aae7e3ce955a783e.js +1 -0
  143. package/assets/esri/core/workers/chunks/b7bcc2d0b0fa8e703c83.js +1 -0
  144. package/assets/esri/core/workers/chunks/{75fc0b1db8e2e3fd2458.js → b8548eb7680abeaf3cd1.js} +1 -1
  145. package/assets/esri/core/workers/chunks/b9db8d059c2ea39518e7.js +1 -0
  146. package/assets/esri/core/workers/chunks/ba67aaa08e4f11e1140a.js +1 -0
  147. package/assets/esri/core/workers/chunks/ba8777844fef6ed3ac2b.js +1 -0
  148. package/assets/esri/core/workers/chunks/ba99a650ea64f5024185.js +1 -0
  149. package/assets/esri/core/workers/chunks/{e421dee5d8b030e79ffb.js → bbeb61d9302323bae9fb.js} +1 -1
  150. package/assets/esri/core/workers/chunks/bbfd2b4af8e498b61af9.js +1 -0
  151. package/assets/esri/core/workers/chunks/{cada52d719c35d40958a.js → bd1c870694edd25bf8aa.js} +1 -1
  152. package/assets/esri/core/workers/chunks/c1f125594e684c1b4ffc.js +1 -0
  153. package/assets/esri/core/workers/chunks/c30b6bbabd05e4976fba.js +1 -0
  154. package/assets/esri/core/workers/chunks/c456abf5ee2a1ad5cc5b.js +1 -0
  155. package/assets/esri/core/workers/chunks/c61e94806b37ca3dd549.js +2 -0
  156. package/assets/esri/core/workers/chunks/c71368cd64f240da1743.js +1 -0
  157. package/assets/esri/core/workers/chunks/c899457f19b749516275.js +1 -0
  158. package/assets/esri/core/workers/chunks/c8d83f71326222b98608.js +1 -0
  159. package/assets/esri/core/workers/chunks/c9653a15324ca53d50e7.js +1 -0
  160. package/assets/esri/core/workers/chunks/{9937920e7993814d0b2c.js → ca695ab000a1e8765d69.js} +1 -1
  161. package/assets/esri/core/workers/chunks/cc1a00694cc9f7c606d6.js +1 -0
  162. package/assets/esri/core/workers/chunks/{b792857a178da2dd77d6.js → cc419e1c5c1dee7ec972.js} +1 -1
  163. package/assets/esri/core/workers/chunks/{2ce845c990bb4d701362.js → cc817c9d3f8e8f8c56e4.js} +1 -1
  164. package/assets/esri/core/workers/chunks/cdd4aeaa3f30bc4ea93a.js +1 -0
  165. package/assets/esri/core/workers/chunks/cf6799fd008d0d7016f7.js +1 -0
  166. package/assets/esri/core/workers/chunks/cfcb258b7e464f219434.js +1 -0
  167. package/assets/esri/core/workers/chunks/d0c8630177d3a4e316f1.js +2 -0
  168. package/assets/esri/core/workers/chunks/{ac59218847e5ef4c4160.js → d0e00f0bb7b9435e170d.js} +1 -1
  169. package/assets/esri/core/workers/chunks/{33e293836f5d28dc5d62.js → d13eeff678972a245d5d.js} +1 -1
  170. package/assets/esri/core/workers/chunks/d1aa87d846a884492b47.js +1 -0
  171. package/assets/esri/core/workers/chunks/{0179949495c87466b428.js → d3a183d90f1ccc8da2bb.js} +10 -10
  172. package/assets/esri/core/workers/chunks/d433bfa2abf2ca8239ba.js +1 -0
  173. package/assets/esri/core/workers/chunks/d4cc8eef64b8c84217a5.js +1 -0
  174. package/assets/esri/core/workers/chunks/{2740f755c3a322cbd477.js → d672c2a1c8eddd235171.js} +1 -1
  175. package/assets/esri/core/workers/chunks/{24006cea112d657f053a.js → da233362b06b6db375f1.js} +1 -1
  176. package/assets/esri/core/workers/chunks/da6134c7883531f21afe.js +1 -0
  177. package/assets/esri/core/workers/chunks/dbc36b85413fae52b56d.js +1 -0
  178. package/assets/esri/core/workers/chunks/dd91824692bec809909c.js +1 -0
  179. package/assets/esri/core/workers/chunks/dd9af4ddefa0b998aa4b.js +1 -0
  180. package/assets/esri/core/workers/chunks/e2ceddd6bcdabec77cc7.js +1 -0
  181. package/assets/esri/core/workers/chunks/e3eab61815ef1c521a6c.js +1 -0
  182. package/assets/esri/core/workers/chunks/e706c37b44e98fbcb5f7.js +1 -0
  183. package/assets/esri/core/workers/chunks/ead4143d811aab610e00.js +2 -0
  184. package/assets/esri/core/workers/chunks/ef269dd559c1c79957e5.js +1 -0
  185. package/assets/esri/core/workers/chunks/efaa455beeefbf97a4c5.js +1 -0
  186. package/assets/esri/core/workers/chunks/f0692e10af5983f6ad93.js +1 -0
  187. package/assets/esri/core/workers/chunks/f16b6cd6b325eb600e82.js +1 -0
  188. package/assets/esri/core/workers/chunks/f1d0208c6b09c1c4b248.js +1 -0
  189. package/assets/esri/core/workers/chunks/f1fa377e8fa53b02876f.js +1 -0
  190. package/assets/esri/core/workers/chunks/{ebb722118a220c92efc3.js → f248131df4eaa5291623.js} +1 -1
  191. package/assets/esri/core/workers/chunks/f762f0f6c83748d8e328.js +1 -0
  192. package/assets/esri/core/workers/chunks/{b9bdb1f05e904c3655e4.js → f834aa732c3f06525089.js} +1 -1
  193. package/assets/esri/core/workers/chunks/{fb12d3c63fcac8391e06.js → fa29b5064d6626cfc019.js} +1 -1
  194. package/assets/esri/core/workers/chunks/fa7a6906598d1002abfd.js +1 -0
  195. package/assets/esri/core/workers/chunks/{e9e4b27ba06a29e6340c.js → faf14281a74a06fa1f30.js} +1 -1
  196. package/assets/esri/core/workers/chunks/fb86b334bfca4670dcfa.js +1 -0
  197. package/assets/esri/core/workers/chunks/{1ef28d4457c8c943ad19.js → fbede01a363895b6381f.js} +1 -1
  198. package/assets/esri/core/workers/chunks/{073f1d5f89875c6aefb1.js → fc1aeea22f8c9d63864a.js} +1 -1
  199. package/assets/esri/core/workers/chunks/fcf7299e2ee904ab9882.js +1 -0
  200. package/assets/esri/core/workers/chunks/{9230ad807020fc2bbf8e.js → fe06cc2f90b2d551e4c1.js} +1 -1
  201. package/assets/esri/core/workers/chunks/{8a3289e15e0ce92e3813.js → fe335441ea233cb0fad5.js} +1 -1
  202. package/assets/esri/core/workers/chunks/{d7b6985984071e78c764.js → ffad5fd9c5e98f4fe2c3.js} +1 -1
  203. package/assets/esri/core/workers/chunks/ffe2cbfea38b92a231d6.js +1 -0
  204. package/assets/esri/geometry/support/pe-wasm.wasm +0 -0
  205. package/chunks/Bufferer-CclWhXVb.js +1 -1
  206. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  207. package/chunks/EmissionComposite.glsl.js +7 -1
  208. package/chunks/Envelope.js +1 -1
  209. package/chunks/GaussianSplat.glsl.js +8 -8
  210. package/chunks/GaussianSplatDepth.glsl.js +4 -4
  211. package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
  212. package/chunks/GeodeticUtils.js +1 -1
  213. package/chunks/GeographicTransformation.js +2 -0
  214. package/chunks/Geometry.js +1 -1
  215. package/chunks/MultiPathImpl.js +1 -1
  216. package/chunks/OperatorCrosses.js +1 -1
  217. package/chunks/OperatorCut.js +1 -1
  218. package/chunks/OperatorGeodesicBuffer.js +1 -1
  219. package/chunks/OperatorGeodeticArea.js +1 -1
  220. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  221. package/chunks/OperatorGeodeticLength.js +1 -1
  222. package/chunks/OperatorGraphicBuffer.js +1 -1
  223. package/chunks/OperatorIntegrate.js +1 -1
  224. package/chunks/OperatorIntersects.js +1 -1
  225. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  226. package/chunks/OperatorOverlaps.js +1 -1
  227. package/chunks/OperatorProject.js +1 -1
  228. package/chunks/OperatorProximity.js +1 -1
  229. package/chunks/OperatorProximityGeodesic.js +1 -1
  230. package/chunks/OperatorShapePreservingLength.js +1 -1
  231. package/chunks/OperatorShapePreservingProject.js +1 -1
  232. package/chunks/OperatorSimplifyOGC.js +1 -1
  233. package/chunks/OperatorTouches.js +1 -1
  234. package/chunks/OperatorWithin.js +1 -1
  235. package/chunks/Point2D.js +1 -1
  236. package/chunks/ProjectionTransformation.js +1 -1
  237. package/chunks/SideCalculator2D-DX0718xq.js +1 -1
  238. package/chunks/SpatialReference.js +1 -1
  239. package/chunks/UnitFactory.js +2 -0
  240. package/chunks/containsOperator.js +1 -1
  241. package/chunks/disjointOperator.js +1 -1
  242. package/chunks/equalsOperator.js +1 -1
  243. package/chunks/pe-wasm.js +1 -1
  244. package/chunks/relateOperator.js +1 -1
  245. package/config.js +1 -1
  246. package/geometry/operators/containsOperator.js +1 -1
  247. package/geometry/operators/disjointOperator.js +1 -1
  248. package/geometry/operators/gx/geodeticUtils.js +1 -1
  249. package/geometry/operators/gx/operatorAutoComplete.js +1 -1
  250. package/geometry/operators/gx/operatorBuffer.js +1 -1
  251. package/geometry/operators/gx/operatorDifference.js +1 -1
  252. package/geometry/operators/gx/operatorGeodesicBuffer.js +1 -1
  253. package/geometry/operators/gx/operatorGeodeticArea.js +1 -1
  254. package/geometry/operators/gx/operatorGeodeticDensify.js +1 -1
  255. package/geometry/operators/gx/operatorGeodeticDistance.js +1 -1
  256. package/geometry/operators/gx/operatorGeodeticLength.js +1 -1
  257. package/geometry/operators/gx/operatorIntersection.js +1 -1
  258. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  259. package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
  260. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  261. package/geometry/operators/gx/operatorProject.js +1 -1
  262. package/geometry/operators/gx/operatorProximityGeodesic.js +1 -1
  263. package/geometry/operators/gx/operatorShapePreservingProject.js +1 -1
  264. package/geometry/operators/gx/operatorSimplify.js +1 -1
  265. package/geometry/operators/gx/operatorSinglePartToMultiPart.js +1 -1
  266. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  267. package/geometry/operators/gx/operatorUnion.js +1 -1
  268. package/geometry/operators/json/containsOperator.js +1 -1
  269. package/geometry/operators/json/disjointOperator.js +1 -1
  270. package/geometry/operators/projectOperator.js +1 -1
  271. package/geometry/operators/reshapeOperator.js +1 -1
  272. package/geometry/operators/support/GeographicTransformation.d.ts +7 -0
  273. package/geometry/operators/support/GeographicTransformation.js +1 -1
  274. package/geometry/operators/support/GeographicTransformationStep.d.ts +7 -1
  275. package/geometry/operators/support/GeographicTransformationStep.js +1 -1
  276. package/geometry/operators/support/geographicTransformationUtils.d.ts +13 -2
  277. package/geometry/operators/support/geographicTransformationUtils.js +1 -1
  278. package/geometry/operators/support/initNoPeFactory.js +1 -1
  279. package/geometry/operators/support/jsonConverter.js +1 -1
  280. package/geometry/operators/support/projectionTransformation.js +1 -1
  281. package/geometry/projection/projectionUtilsState.js +2 -0
  282. package/geometry/projectionUtils.js +1 -1
  283. package/geometry/support/geometryUtils.js +1 -1
  284. package/kernel.js +1 -1
  285. package/layers/raster/datasets/MRFRaster.js +1 -1
  286. package/layers/raster/formats/JpgPlus.js +1 -1
  287. package/layers/raster/formats/RasterCodec.js +1 -1
  288. package/layers/raster/types.d.ts +65 -0
  289. package/layers/support/AggregateField.d.ts +9 -3
  290. package/layers/support/FeatureReductionCluster.d.ts +16 -6
  291. package/layers/support/I3SExtractChanges.js +2 -0
  292. package/package.json +3 -3
  293. package/renderers/support/AuthoringInfo.d.ts +8 -3
  294. package/support/revision.js +1 -1
  295. package/symbols/cim/cimAnalyzer.js +1 -1
  296. package/symbols/cim/effects/EffectRadial.js +1 -1
  297. package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
  298. package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
  299. package/views/2d/engine/webgl/shaderGraph/techniques/fill/FillMeshWriter.js +1 -1
  300. package/views/2d/engine/webgl/shaderGraph/techniques/fill/GradientFillMeshWriter.js +1 -1
  301. package/views/2d/engine/webgl/shaderGraph/techniques/line/LineMeshWriter.js +1 -1
  302. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriter.js +1 -1
  303. package/views/2d/layers/MediaLayerView2D.js +1 -1
  304. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  305. package/views/3d/GroundView3D.js +1 -1
  306. package/views/3d/analysis/LineOfSight/LineOfSightDrawToolRenderer.js +1 -1
  307. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  308. package/views/3d/analysis/LineOfSight/LineOfSightInteractionVisuals.js +1 -1
  309. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  310. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  311. package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
  312. package/views/3d/layers/I3SMeshView3D.js +1 -1
  313. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  314. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  315. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  316. package/views/3d/layers/SceneLayerView3D.js +1 -1
  317. package/views/3d/layers/graphics/Graphics3DFrustumVisibility.js +1 -1
  318. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  319. package/views/3d/state/controllers/PinchAndPanControllerGlobal.js +1 -1
  320. package/views/3d/state/controllers/PinchAndPanControllerLocal.js +1 -1
  321. package/views/3d/state/controllers/RotateController.js +1 -1
  322. package/views/3d/state/controllers/ZoomControllerGlobal.js +1 -1
  323. package/views/3d/state/controllers/ZoomControllerLocal.js +1 -1
  324. package/views/3d/state/controllers/ZoomStepControllerLocal.js +1 -1
  325. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  326. package/views/3d/support/PBFDecoder.js +1 -1
  327. package/views/3d/support/QualityProfile.js +1 -1
  328. package/views/3d/support/QualitySettings.js +1 -1
  329. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  330. package/views/3d/terrain/PlanarPatch.js +1 -1
  331. package/views/3d/terrain/Tile.js +1 -1
  332. package/views/3d/webgl-engine/Stage.js +1 -1
  333. package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
  334. package/views/3d/webgl-engine/lib/EmissionComposite.glsl.js +1 -1
  335. package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
  336. package/views/3d/webgl-engine/lib/EmissionCompositeTechnique.js +1 -1
  337. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
  338. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  339. package/views/3d/webgl-engine/shaders/GaussianSplatDepthPolicy.js +1 -1
  340. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +50 -22
  341. package/views/MapView.d.ts +0 -60
  342. package/views/View2D.d.ts +59 -1
  343. package/views/analysis/ElevationProfile/ElevationProfileController.js +1 -1
  344. package/views/draw/support/managers/InteractiveHandleManager.js +1 -1
  345. package/views/support/GroundElevationSampler.js +1 -1
  346. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  347. package/widgets/BatchAttributeForm/expressions/expressionUtils.js +1 -1
  348. package/widgets/ElevationProfile/ElevationProfileViewModel.js +1 -1
  349. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  350. package/widgets/Legend/support/utils.js +1 -1
  351. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  352. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  353. package/widgets/OrientedImageryViewer/components/ImageLocationWidget.js +1 -1
  354. package/widgets/OrientedImageryViewer.js +1 -1
  355. package/assets/esri/core/workers/chunks/04105d83556409489835.js +0 -1
  356. package/assets/esri/core/workers/chunks/05b6b2c0b76afb100e33.js +0 -1
  357. package/assets/esri/core/workers/chunks/0909816f13d25cacf250.js +0 -1
  358. package/assets/esri/core/workers/chunks/0933203eee15ea50e123.js +0 -1
  359. package/assets/esri/core/workers/chunks/0b18de5147d76b68896f.js +0 -1
  360. package/assets/esri/core/workers/chunks/0d9d33f29124d464a4cb.js +0 -1
  361. package/assets/esri/core/workers/chunks/0d9fe49812554e7d7ba7.js +0 -1
  362. package/assets/esri/core/workers/chunks/0da5b27b070ab780f8b3.js +0 -1
  363. package/assets/esri/core/workers/chunks/0e333aced8b23aa49a0e.js +0 -1
  364. package/assets/esri/core/workers/chunks/0eaa8265a4cd64297545.js +0 -1
  365. package/assets/esri/core/workers/chunks/1142f8e9c80207d6bdae.js +0 -1
  366. package/assets/esri/core/workers/chunks/118ccfa2d685764752ee.js +0 -1
  367. package/assets/esri/core/workers/chunks/12a64eca4c571926d9d4.js +0 -1
  368. package/assets/esri/core/workers/chunks/1642fa1263d8f4a45101.js +0 -1
  369. package/assets/esri/core/workers/chunks/16a04fc184728d66e6e1.js +0 -1
  370. package/assets/esri/core/workers/chunks/18e0e993c0c39c962e61.js +0 -1
  371. package/assets/esri/core/workers/chunks/19233d0016e5b154c5ce.js +0 -1
  372. package/assets/esri/core/workers/chunks/1a467da4c0b33f655199.js +0 -1
  373. package/assets/esri/core/workers/chunks/1ac8a7a129ba33e05a24.js +0 -1
  374. package/assets/esri/core/workers/chunks/1d92d53186debd52e753.js +0 -1
  375. package/assets/esri/core/workers/chunks/1dba93abe84d30f05d8d.js +0 -1
  376. package/assets/esri/core/workers/chunks/2033e6d42453e4e67048.js +0 -1
  377. package/assets/esri/core/workers/chunks/20b54e7872d967f3be32.js +0 -1
  378. package/assets/esri/core/workers/chunks/2501d9459f6d14c797e5.js +0 -1
  379. package/assets/esri/core/workers/chunks/253c231b5a52f1d2d3a5.js +0 -1
  380. package/assets/esri/core/workers/chunks/257f1e8316877f611e11.js +0 -1
  381. package/assets/esri/core/workers/chunks/28924f31f5ba8ebdc60a.js +0 -1
  382. package/assets/esri/core/workers/chunks/28b09fe50b855a1d8a3f.js +0 -1
  383. package/assets/esri/core/workers/chunks/2b0558c1716425974563.js +0 -2
  384. package/assets/esri/core/workers/chunks/2e7c830b5b1fe406169f.js +0 -1
  385. package/assets/esri/core/workers/chunks/2f4ed8a63d57636a4ebe.js +0 -1
  386. package/assets/esri/core/workers/chunks/393f79843d5a78c1cc37.js +0 -1
  387. package/assets/esri/core/workers/chunks/3958d92c737b3a2a3bc2.js +0 -1
  388. package/assets/esri/core/workers/chunks/3978f00a03e97645b276.js +0 -1
  389. package/assets/esri/core/workers/chunks/3b5c5356353f1a2303a0.js +0 -1
  390. package/assets/esri/core/workers/chunks/40e48b720d89cd067892.js +0 -1
  391. package/assets/esri/core/workers/chunks/436d51b9f1b1b5abc4bc.js +0 -1
  392. package/assets/esri/core/workers/chunks/44a786aba84918f2b247.js +0 -1
  393. package/assets/esri/core/workers/chunks/463747a822499dd933ef.js +0 -1
  394. package/assets/esri/core/workers/chunks/484b251fbcbffcb58323.js +0 -1
  395. package/assets/esri/core/workers/chunks/495f90fe3d0ad32bb82d.js +0 -1
  396. package/assets/esri/core/workers/chunks/49a3888bf9e2481642ac.js +0 -1
  397. package/assets/esri/core/workers/chunks/4ce57dd39075e8fb357c.js +0 -1
  398. package/assets/esri/core/workers/chunks/5459ba8fdeb2370bb52b.js +0 -1
  399. package/assets/esri/core/workers/chunks/55924fb0de05e727f5e3.js +0 -1
  400. package/assets/esri/core/workers/chunks/55dda957c79fb285185f.js +0 -1
  401. package/assets/esri/core/workers/chunks/56e6d8c4a9ed893ce951.js +0 -1
  402. package/assets/esri/core/workers/chunks/57159bcac86d660dcceb.js +0 -1
  403. package/assets/esri/core/workers/chunks/58026fc30d8a0ded4102.js +0 -1
  404. package/assets/esri/core/workers/chunks/5eb29f0068f1c839d05e.js +0 -1
  405. package/assets/esri/core/workers/chunks/5f553da48d0ccbbfcd3c.js +0 -2
  406. package/assets/esri/core/workers/chunks/5fb76575575fe8cfb1f0.js +0 -1
  407. package/assets/esri/core/workers/chunks/6072c63a5da4366e9942.js +0 -1
  408. package/assets/esri/core/workers/chunks/626a715fdec93e188e0c.js +0 -1
  409. package/assets/esri/core/workers/chunks/6525c925bb91facb3575.js +0 -1
  410. package/assets/esri/core/workers/chunks/6529b5cc3ac6baa29fff.js +0 -2
  411. package/assets/esri/core/workers/chunks/65d1e338612e59063eba.js +0 -1
  412. package/assets/esri/core/workers/chunks/66e60351aacbd162775f.js +0 -1
  413. package/assets/esri/core/workers/chunks/694371f51c52a7a94da4.js +0 -1
  414. package/assets/esri/core/workers/chunks/69b0dcd7bcd8ec42e2c3.js +0 -1
  415. package/assets/esri/core/workers/chunks/7260e63252fa5452dc22.js +0 -1
  416. package/assets/esri/core/workers/chunks/72eb0ac55026a4f5d6a7.js +0 -1
  417. package/assets/esri/core/workers/chunks/79429c8be5da85713200.js +0 -1
  418. package/assets/esri/core/workers/chunks/79c0a966f7d11d3c217f.js +0 -1
  419. package/assets/esri/core/workers/chunks/7b470d6ad182548b9e95.js +0 -1
  420. package/assets/esri/core/workers/chunks/7b862a074816c099b9ff.js +0 -1
  421. package/assets/esri/core/workers/chunks/7baa363b3b0a442a63d2.js +0 -1
  422. package/assets/esri/core/workers/chunks/7d8eb4dbea1916320f74.js +0 -1
  423. package/assets/esri/core/workers/chunks/7ddf9b2718dd047f15e6.js +0 -1
  424. package/assets/esri/core/workers/chunks/835af7b4fd92cb4e7af0.js +0 -1
  425. package/assets/esri/core/workers/chunks/8566449c39eba55147f5.js +0 -1
  426. package/assets/esri/core/workers/chunks/864691186c449ca2c3db.js +0 -1
  427. package/assets/esri/core/workers/chunks/88d5541679e77117bf03.js +0 -1
  428. package/assets/esri/core/workers/chunks/88fd698b940dadcc6dc5.js +0 -1
  429. package/assets/esri/core/workers/chunks/894ebc64b698e5d7604b.js +0 -1
  430. package/assets/esri/core/workers/chunks/8be707044d992ef5f1d8.js +0 -1
  431. package/assets/esri/core/workers/chunks/8c1bddc88cc5f4251021.js +0 -1
  432. package/assets/esri/core/workers/chunks/8eecc6df6511c8830f5d.js +0 -1
  433. package/assets/esri/core/workers/chunks/8f0d4aec8bd3cbfefc40.js +0 -1
  434. package/assets/esri/core/workers/chunks/8fea514aada1195c8f30.js +0 -1
  435. package/assets/esri/core/workers/chunks/9234a293d61e134f121f.js +0 -1
  436. package/assets/esri/core/workers/chunks/94bf7f0da6ad3f7ea277.js +0 -1
  437. package/assets/esri/core/workers/chunks/987594539981483a7c5e.js +0 -1
  438. package/assets/esri/core/workers/chunks/995a433936fc90d41634.js +0 -2
  439. package/assets/esri/core/workers/chunks/9bbff8237540409610b3.js +0 -1
  440. package/assets/esri/core/workers/chunks/9e1392a0c608a13ab036.js +0 -1
  441. package/assets/esri/core/workers/chunks/9f1211d2267fb7673c4d.js +0 -1
  442. package/assets/esri/core/workers/chunks/a486d99f9879f94151ba.js +0 -1
  443. package/assets/esri/core/workers/chunks/a50421fe79f264ae3619.js +0 -1
  444. package/assets/esri/core/workers/chunks/a5c115fc53edb52ce1de.js +0 -1
  445. package/assets/esri/core/workers/chunks/a739e617fc461014ad1f.js +0 -1
  446. package/assets/esri/core/workers/chunks/aa21031c8f12ca438eaa.js +0 -1
  447. package/assets/esri/core/workers/chunks/ad27689b231e282b7620.js +0 -1
  448. package/assets/esri/core/workers/chunks/aed16c3e26652960ad3f.js +0 -1
  449. package/assets/esri/core/workers/chunks/af6e8c961fd768fa7be3.js +0 -1
  450. package/assets/esri/core/workers/chunks/b3a1a93c6dc9247cb048.js +0 -1
  451. package/assets/esri/core/workers/chunks/b4abf82b8ac974a55ae1.js +0 -1
  452. package/assets/esri/core/workers/chunks/b8cd81d8fcc78d272130.js +0 -1
  453. package/assets/esri/core/workers/chunks/b9a1046ca2cd0cca5da5.js +0 -1
  454. package/assets/esri/core/workers/chunks/b9d6f89f9b8e9d1bc787.js +0 -1
  455. package/assets/esri/core/workers/chunks/bab5f4b2424b487b87ac.js +0 -1
  456. package/assets/esri/core/workers/chunks/c02b3b8b71205f6ce290.js +0 -1
  457. package/assets/esri/core/workers/chunks/c17dda6fadb8bfad0d51.js +0 -1
  458. package/assets/esri/core/workers/chunks/c21212c356f65244e34e.js +0 -1
  459. package/assets/esri/core/workers/chunks/c374e5d5980db74c4aca.js +0 -1
  460. package/assets/esri/core/workers/chunks/c6bf17b5ff6ec4b980a1.js +0 -1
  461. package/assets/esri/core/workers/chunks/c99dcc17fbd7acd2ad2e.js +0 -1
  462. package/assets/esri/core/workers/chunks/ce481eeb27ea9c1782ae.js +0 -1
  463. package/assets/esri/core/workers/chunks/cec1c87eb3749276ced4.js +0 -1
  464. package/assets/esri/core/workers/chunks/cef02ed3942c010da2e8.js +0 -29
  465. package/assets/esri/core/workers/chunks/cfdbc48f58433a3d5fc3.js +0 -1
  466. package/assets/esri/core/workers/chunks/d456520e4b119a2816b6.js +0 -1
  467. package/assets/esri/core/workers/chunks/d8da31bfe2bc4174e5aa.js +0 -1
  468. package/assets/esri/core/workers/chunks/da1c9257793c2817f40f.js +0 -1
  469. package/assets/esri/core/workers/chunks/dc0c3109b7558b4fe016.js +0 -1
  470. package/assets/esri/core/workers/chunks/ddd8f6154e265dbb6f9f.js +0 -1
  471. package/assets/esri/core/workers/chunks/de601f0d5a2a282d2efd.js +0 -1
  472. package/assets/esri/core/workers/chunks/e227eb44cd139fe2bc1b.js +0 -1
  473. package/assets/esri/core/workers/chunks/e2ddfc96ddba92302e0c.js +0 -1
  474. package/assets/esri/core/workers/chunks/e61ab8ef30bbe788b9d7.js +0 -1
  475. package/assets/esri/core/workers/chunks/e89e6eea380ca2c13b64.js +0 -1
  476. package/assets/esri/core/workers/chunks/e9d352d030dcad1619a6.js +0 -1
  477. package/assets/esri/core/workers/chunks/eb95464bd017fb839510.js +0 -1
  478. package/assets/esri/core/workers/chunks/ed4ac5568dc2815b066d.js +0 -1
  479. package/assets/esri/core/workers/chunks/ed564358cc7b3ee463a3.js +0 -1
  480. package/assets/esri/core/workers/chunks/ef2e0a014c982d9c7ca4.js +0 -1
  481. package/assets/esri/core/workers/chunks/ef9489d1dccb817460bb.js +0 -2
  482. package/assets/esri/core/workers/chunks/f086c6d229fb34a9d7f9.js +0 -1
  483. package/assets/esri/core/workers/chunks/f35e749bb5be39880cbe.js +0 -1
  484. package/assets/esri/core/workers/chunks/f4bc563c71c478d3912f.js +0 -1
  485. package/assets/esri/core/workers/chunks/f6150b51a9430691a040.js +0 -1
  486. package/assets/esri/core/workers/chunks/f6f7d885b4d6080e3f58.js +0 -1
  487. package/assets/esri/core/workers/chunks/f95870bb4d8e4e13e69e.js +0 -1
  488. package/assets/esri/core/workers/chunks/fa59f10ed0f182a2a7f3.js +0 -1
  489. package/assets/esri/core/workers/chunks/fc9065d0cd6285fe0f0d.js +0 -1
  490. /package/assets/esri/core/workers/chunks/{2b0558c1716425974563.js.LICENSE.txt → 6c389e9646a48c26da20.js.LICENSE.txt} +0 -0
  491. /package/assets/esri/core/workers/chunks/{995a433936fc90d41634.js.LICENSE.txt → ab10388dcc17a665ac3b.js.LICENSE.txt} +0 -0
  492. /package/assets/esri/core/workers/chunks/{ef9489d1dccb817460bb.js.LICENSE.txt → ac9a3dfd02160e43fc8a.js.LICENSE.txt} +0 -0
  493. /package/assets/esri/core/workers/chunks/{ee63c693f2539f3bfa17.js.LICENSE.txt → c61e94806b37ca3dd549.js.LICENSE.txt} +0 -0
  494. /package/assets/esri/core/workers/chunks/{5f553da48d0ccbbfcd3c.js.LICENSE.txt → d0c8630177d3a4e316f1.js.LICENSE.txt} +0 -0
  495. /package/assets/esri/core/workers/chunks/{6529b5cc3ac6baa29fff.js.LICENSE.txt → ead4143d811aab610e00.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../core/Error.js";import{property as s,subclass as r}from"../../../core/accessorSupport/decorators.js";import i from"../../../geometry/Extent.js";import o from"../../../geometry/Point.js";import n from"../../../geometry/SpatialReference.js";import a from"./BaseRaster.js";import{parseSpatialReference as l,parsePAMInfo as f}from"./pamParser.js";import{getElement as u,getElementValue as h}from"./xmlUtilities.js";import{isPlatformLittleEndian as c}from"../formats/utils.js";import{estimateStatisticsFromHistograms as p}from"../functions/stretchUtils.js";import m from"../../support/PixelBlock.js";import g from"../../support/RasterInfo.js";import d from"../../support/RasterStorageInfo.js";const y=new Map([["byte","u8"],["signedbyte","s8"],["int8","s8"],["uint8","u8"],["int16","s16"],["uint16","u16"],["int32","s32"],["uint32","u32"],["float32","f32"],["float64","f64"],["double64","f64"]]),x=new Map;x.set("none",{blobExtension:".til",isOneSegment:!0,decoderFormat:"bip"}),x.set("lerc",{blobExtension:".lrc",isOneSegment:!1,decoderFormat:"lerc"}),x.set("deflate",{blobExtension:".pzp",isOneSegment:!0,decoderFormat:"deflate"}),x.set("jpeg",{blobExtension:".pjg",isOneSegment:!0,decoderFormat:"jpg"}),x.set("qb3",{blobExtension:".pq3",isOneSegment:!0,decoderFormat:"qb3"});let b=class extends a{constructor(){super(...arguments),this._files=null,this._storageIndex=null,this._isBsq=!1,this.datasetFormat="MRF"}async fetchRawTile(t,e,s,r={}){const{blockWidth:i,blockHeight:o,blockBoundary:n}=this.rasterInfo.storageInfo,a=n[t];if(!a||a.maxRow<e||a.maxCol<s||a.minRow>e||a.minCol>s)return null;const{bandCount:l,pixelType:f}=this.rasterInfo,{ranges:u,actualTileWidth:h,actualTileHeight:c}=this._getTileLocation(t,e,s);if(!u||0===u.length)return null;if(u.some(t=>t.from>t.to)){const t=new Uint8Array(i*o);return new m({width:i,height:o,pixels:void 0,mask:t,validPixelCount:0})}const{bandIds:p}=this.ioConfig,g=this._getBandSegmentCount(),d=[];let y=0;for(y=0;y<g;y++)p&&!p.includes(y)||d.push(this.request(this._files.data,{range:{from:u[y].from,to:u[y].to},responseType:"array-buffer",signal:r.signal}));const b=await Promise.all(d),w=b.map(t=>t.data.byteLength).reduce((t,e)=>t+e),I=new Uint8Array(w),_=[];let A=0;for(y=0;y<g;y++)_.push(A),I.set(new Uint8Array(b[y].data),A),A+=b[y].data.byteLength;const F=x.get(this.rasterInfo.storageInfo.compression).decoderFormat,R=await this.decodePixelBlock(I.buffer,{width:i,height:o,format:F,planes:p?.length||l,offsets:_,pixelType:f}).catch(()=>null);if(null==R)return null;let{noDataValue:S}=this.rasterInfo;if(null!=S&&"lerc"!==F&&!R.mask&&(S=S[0],null!=S)){const t=R.width*R.height,e=new Uint8Array(t);if(Math.abs(S)>1e24)for(y=0;y<t;y++)Math.abs((R.pixels[0][y]-S)/S)>1e-6&&(e[y]=1);else for(y=0;y<t;y++)R.pixels[0][y]!==S&&(e[y]=1);R.mask=e}let M=0,k=0;if(h!==i||c!==o){let t=R.mask;if(t)for(y=0;y<o;y++)if(k=y*i,y<c)for(M=h;M<i;M++)t[k+M]=0;else for(M=0;M<i;M++)t[k+M]=0;else for(t=new Uint8Array(i*o),R.mask=t,y=0;y<c;y++)for(k=y*i,M=0;M<h;M++)t[k+M]=1}return R}async _open(t){this.datasetName=this.url.slice(this.url.lastIndexOf("/")+1);const e=t?t.signal:null,s=await this.request(this.url,{responseType:"xml",signal:e}),{rasterInfo:r,files:i}=this._parseHeader(s.data),{skipMapInfo:o,skipExtensions:n=[]}=this.ioConfig;if(!n.includes("aux.xml")&&!o){const e=await this._fetchAuxiliaryData(t);null!=e&&(r.statistics=e.statistics??r.statistics,r.histograms=e.histograms,e.histograms&&null==r.statistics&&(r.statistics=p(e.histograms)))}o&&this.updateImageSpaceRasterInfo(r),this._set("rasterInfo",r),this._files=i;const a=await this.request(i.index,{responseType:"array-buffer",signal:e});this._storageIndex=w(a.data);const{blockWidth:l,blockHeight:f}=this.rasterInfo.storageInfo,u=this.rasterInfo.storageInfo.pyramidScalingFactor,{width:h,height:c}=this.rasterInfo,m=[],g=this._getBandSegmentCount();let d=0,y=-1;for(;d<this._storageIndex.length;){y++;const t=Math.ceil(h/l/u**y)-1,e=Math.ceil(c/f/u**y)-1;d+=(t+1)*(e+1)*g*4,m.push({maxRow:e,maxCol:t,minCol:0,minRow:0})}this.rasterInfo.storageInfo.blockBoundary=m,y>0&&(this.rasterInfo.storageInfo.firstPyramidLevel=1,this.rasterInfo.storageInfo.maximumPyramidLevel=y),this.updateTileInfo()}_getBandSegmentCount(){return this._isBsq?this.rasterInfo.bandCount:1}_getTileLocation(t,e,s){const{blockWidth:r,blockHeight:i,pyramidScalingFactor:o}=this.rasterInfo.storageInfo,{width:n,height:a}=this.rasterInfo,l=this._getBandSegmentCount();let f,u,h,c=0,p=0;for(h=0;h<t;h++)p=o**h,f=Math.ceil(n/r/p),u=Math.ceil(a/i/p),c+=f*u;p=o**t,f=Math.ceil(n/r/p),u=Math.ceil(a/i/p),c+=e*f+s,c*=4*l;const m=this._storageIndex.subarray(c,c+4*l);let g=0,d=0;const y=[];for(let x=0;x<l;x++)g=m[4*x]*2**32+m[4*x+1],d=g+m[4*x+2]*2**32+m[4*x+3]-1,y.push({from:g,to:d});return{ranges:y,actualTileWidth:s<f-1?r:Math.ceil(n/p)-r*(f-1),actualTileHeight:e<u-1?i:Math.ceil(a/p)-i*(u-1)}}_parseHeader(t){const s=u(t,"MRF_META/Raster");if(!s)throw new e("mrf:open","not a valid MRF format");const r=u(s,"Size"),a=parseInt(r.getAttribute("x"),10),f=parseInt(r.getAttribute("y"),10),c=parseInt(r.getAttribute("c"),10),p=(h(s,"Compression")||"none").toLowerCase();if(!x.has(p))throw new e("mrf:open","currently does not support compression "+p);const m=h(s,"DataType")||"UInt8",b=y.get(m.toLowerCase());if(null==b)throw new e("mrf:open","currently does not support pixel type "+m);const w=u(s,"PageSize"),I=parseInt(w.getAttribute("x"),10),_=parseInt(w.getAttribute("y"),10),A=w.getAttribute("c"),F=A?A===String(c):x.get(p).isOneSegment;this._isBsq=!F;const R=u(s,"DataValues");let S;if(R){const t=R.getAttribute("NoData");null!=t&&(S=t.trim().split(" ").map(t=>parseFloat(t)))}if(u(t,"MRF_META/CachedSource"))throw new e("mrf:open","currently does not support MRF referencing other data files");const M=u(t,"MRF_META/GeoTags"),k=u(M,"BoundingBox");let C,T=!1;if(null!=k){const t=parseFloat(k.getAttribute("minx")),e=parseFloat(k.getAttribute("miny")),s=parseFloat(k.getAttribute("maxx")),r=parseFloat(k.getAttribute("maxy")),o=h(M,"Projection")||"";let a=n.WGS84;if("LOCAL_CS[]"!==o)if(o.toLowerCase().startsWith("epsg:")){const t=Number(o.slice(5));isNaN(t)||0===t||(a=new n({wkid:t}))}else a=l(o)??n.WGS84;else T=!0,a=new n({wkid:3857});C=new i(t,e,s,r),C.spatialReference=a}else T=!0,C=new i({xmin:-.5,ymin:.5-f,xmax:a-.5,ymax:.5,spatialReference:new n({wkid:3857})});const j=u(t,"MRF_META/Rsets"),B=parseInt(j?.getAttribute("scale")||"2",10),L=C.spatialReference,E=new d({origin:new o({x:C.xmin,y:C.ymax,spatialReference:L}),blockWidth:I,blockHeight:_,pyramidBlockWidth:I,pyramidBlockHeight:_,compression:p,pyramidScalingFactor:B}),P=new o({x:C.width/a,y:C.height/f,spatialReference:L}),U=new g({width:a,height:f,extent:C,isPseudoSpatialReference:T,spatialReference:L,bandCount:c,pixelType:b,pixelSize:P,noDataValue:S,storageInfo:E}),q=this._getAuxFullPath(h(s,"DataFile")),W=this._getAuxFullPath(h(s,"IndexFile"));return{rasterInfo:U,files:{mrf:this.url,index:W||this.url.replace(".mrf",".idx"),data:q||this.url.replace(".mrf",x.get(p).blobExtension)}}}_getAuxFullPath(t){if(!t)return null;if(t.includes("\\"))return null;if(t.includes("/"))return t.startsWith(new URL(this.url).origin)?t:null;return`${this.url.slice(0,this.url.lastIndexOf("/"))}/${t}`}async _fetchAuxiliaryData(t){try{const{data:e}=await this.request(this.url+".aux.xml",{responseType:"xml",signal:t?.signal});return f(e)}catch{return null}}};function w(t){if(t.byteLength%16>0)throw new Error("invalid array buffer must be multiples of 16");let e;if(c){const s=new Uint8Array(t),r=new ArrayBuffer(t.byteLength),i=new Uint8Array(r);for(let e=0;e<t.byteLength/4;e++)for(let t=0;t<4;t++)i[4*e+t]=s[4*e+3-t];e=new Uint32Array(r)}else e=new Uint32Array(t);return e}t([s()],b.prototype,"_files",void 0),t([s()],b.prototype,"_storageIndex",void 0),t([s()],b.prototype,"_isBsq",void 0),t([s({type:String,json:{write:!0}})],b.prototype,"datasetFormat",void 0),b=t([r("esri.layers.raster.datasets.MRFRaster")],b);const I=b;export{I as default};
2
+ import{__decorate as t}from"tslib";import e from"../../../core/Error.js";import{property as s,subclass as r}from"../../../core/accessorSupport/decorators.js";import i from"../../../geometry/Extent.js";import o from"../../../geometry/Point.js";import n from"../../../geometry/SpatialReference.js";import a from"./BaseRaster.js";import{parseSpatialReference as l,parsePAMInfo as f}from"./pamParser.js";import{getElement as c,getElementValue as u}from"./xmlUtilities.js";import{isPlatformLittleEndian as h}from"../formats/utils.js";import{estimateStatisticsFromHistograms as p}from"../functions/stretchUtils.js";import m from"../../support/PixelBlock.js";import g from"../../support/RasterInfo.js";import d from"../../support/RasterStorageInfo.js";const y=new Map([["byte","u8"],["signedbyte","s8"],["int8","s8"],["uint8","u8"],["int16","s16"],["uint16","u16"],["int32","s32"],["uint32","u32"],["float32","f32"],["float64","f64"],["double64","f64"]]),x=new Map;x.set("none",{blobExtension:".til",isOneSegment:!0,decoderFormat:"bip"}),x.set("lerc",{blobExtension:".lrc",isOneSegment:!1,decoderFormat:"lerc"}),x.set("deflate",{blobExtension:".pzp",isOneSegment:!0,decoderFormat:"deflate"}),x.set("jpeg",{blobExtension:".pjg",isOneSegment:!0,decoderFormat:"jpg"}),x.set("qb3",{blobExtension:".pq3",isOneSegment:!0,decoderFormat:"qb3"});let b=class extends a{constructor(){super(...arguments),this._files=null,this._storageIndex=null,this._isBsq=!1,this.datasetFormat="MRF"}async fetchRawTile(t,e,s,r={}){const{blockWidth:i,blockHeight:o,blockBoundary:n}=this.rasterInfo.storageInfo,a=n[t];if(!a||a.maxRow<e||a.maxCol<s||a.minRow>e||a.minCol>s)return null;const{bandCount:l,pixelType:f}=this.rasterInfo,{ranges:c,actualTileWidth:u,actualTileHeight:h}=this._getTileLocation(t,e,s);if(!c||0===c.length)return null;if(c.some(t=>t.from>t.to)){const t=new Uint8Array(i*o);return new m({width:i,height:o,pixels:void 0,mask:t,validPixelCount:0})}const{bandIds:p}=this.ioConfig,g=this._getBandSegmentCount(),d=[];let y=0;for(y=0;y<g;y++)p&&!p.includes(y)||d.push(this.request(this._files.data,{range:{from:c[y].from,to:c[y].to},responseType:"array-buffer",signal:r.signal}));const b=await Promise.all(d),w=b.map(t=>t.data.byteLength).reduce((t,e)=>t+e),I=new Uint8Array(w),A=[];let _=0;for(y=0;y<g;y++)A.push(_),I.set(new Uint8Array(b[y].data),_),_+=b[y].data.byteLength;const R=x.get(this.rasterInfo.storageInfo.compression).decoderFormat,F="jpg"===R&&4===l&&1===A.length,S=await this.decodePixelBlock(I.buffer,{width:i,height:o,format:R,planes:p?.length||l,offsets:A,pixelType:f,canvasUsage:F?"no-canvas":void 0,decodeJpegAsRgb:!1}).catch(()=>null);if(null==S)return null;let{noDataValue:M}=this.rasterInfo;if(null!=M&&"lerc"!==R&&!S.mask&&(M=M[0],null!=M)){const t=S.width*S.height,e=new Uint8Array(t);if(Math.abs(M)>1e24)for(y=0;y<t;y++)Math.abs((S.pixels[0][y]-M)/M)>1e-6&&(e[y]=1);else for(y=0;y<t;y++)S.pixels[0][y]!==M&&(e[y]=1);S.mask=e}let k=0,C=0;if(u!==i||h!==o){let t=S.mask;if(t)for(y=0;y<o;y++)if(C=y*i,y<h)for(k=u;k<i;k++)t[C+k]=0;else for(k=0;k<i;k++)t[C+k]=0;else for(t=new Uint8Array(i*o),S.mask=t,y=0;y<h;y++)for(C=y*i,k=0;k<u;k++)t[C+k]=1}return S}async _open(t){this.datasetName=this.url.slice(this.url.lastIndexOf("/")+1);const e=t?t.signal:null,s=await this.request(this.url,{responseType:"xml",signal:e}),{rasterInfo:r,files:i}=this._parseHeader(s.data),{skipMapInfo:o,skipExtensions:n=[]}=this.ioConfig;if(!n.includes("aux.xml")&&!o){const e=await this._fetchAuxiliaryData(t);null!=e&&(r.statistics=e.statistics??r.statistics,r.histograms=e.histograms,e.histograms&&null==r.statistics&&(r.statistics=p(e.histograms)))}o&&this.updateImageSpaceRasterInfo(r),this._set("rasterInfo",r),this._files=i;const a=await this.request(i.index,{responseType:"array-buffer",signal:e});this._storageIndex=w(a.data);const{blockWidth:l,blockHeight:f}=this.rasterInfo.storageInfo,c=this.rasterInfo.storageInfo.pyramidScalingFactor,{width:u,height:h}=this.rasterInfo,m=[],g=this._getBandSegmentCount();let d=0,y=-1;for(;d<this._storageIndex.length;){y++;const t=Math.ceil(u/l/c**y)-1,e=Math.ceil(h/f/c**y)-1;d+=(t+1)*(e+1)*g*4,m.push({maxRow:e,maxCol:t,minCol:0,minRow:0})}this.rasterInfo.storageInfo.blockBoundary=m,y>0&&(this.rasterInfo.storageInfo.firstPyramidLevel=1,this.rasterInfo.storageInfo.maximumPyramidLevel=y),this.updateTileInfo()}_getBandSegmentCount(){return this._isBsq?this.rasterInfo.bandCount:1}_getTileLocation(t,e,s){const{blockWidth:r,blockHeight:i,pyramidScalingFactor:o}=this.rasterInfo.storageInfo,{width:n,height:a}=this.rasterInfo,l=this._getBandSegmentCount();let f,c,u,h=0,p=0;for(u=0;u<t;u++)p=o**u,f=Math.ceil(n/r/p),c=Math.ceil(a/i/p),h+=f*c;p=o**t,f=Math.ceil(n/r/p),c=Math.ceil(a/i/p),h+=e*f+s,h*=4*l;const m=this._storageIndex.subarray(h,h+4*l);let g=0,d=0;const y=[];for(let x=0;x<l;x++)g=m[4*x]*2**32+m[4*x+1],d=g+m[4*x+2]*2**32+m[4*x+3]-1,y.push({from:g,to:d});return{ranges:y,actualTileWidth:s<f-1?r:Math.ceil(n/p)-r*(f-1),actualTileHeight:e<c-1?i:Math.ceil(a/p)-i*(c-1)}}_parseHeader(t){const s=c(t,"MRF_META/Raster");if(!s)throw new e("mrf:open","not a valid MRF format");const r=c(s,"Size"),a=parseInt(r.getAttribute("x"),10),f=parseInt(r.getAttribute("y"),10),h=parseInt(r.getAttribute("c"),10),p=(u(s,"Compression")||"none").toLowerCase();if(!x.has(p))throw new e("mrf:open","currently does not support compression "+p);const m=u(s,"DataType")||"UInt8",b=y.get(m.toLowerCase());if(null==b)throw new e("mrf:open","currently does not support pixel type "+m);const w=c(s,"PageSize"),I=parseInt(w.getAttribute("x"),10),A=parseInt(w.getAttribute("y"),10),_=w.getAttribute("c"),R=_?_===String(h):x.get(p).isOneSegment;this._isBsq=!R;const F=c(s,"DataValues");let S;if(F){const t=F.getAttribute("NoData");null!=t&&(S=t.trim().split(" ").map(t=>parseFloat(t)))}if(c(t,"MRF_META/CachedSource"))throw new e("mrf:open","currently does not support MRF referencing other data files");const M=c(t,"MRF_META/GeoTags"),k=c(M,"BoundingBox");let C,T=!1;if(null!=k){const t=parseFloat(k.getAttribute("minx")),e=parseFloat(k.getAttribute("miny")),s=parseFloat(k.getAttribute("maxx")),r=parseFloat(k.getAttribute("maxy")),o=u(M,"Projection")||"";let a=n.WGS84;if("LOCAL_CS[]"!==o)if(o.toLowerCase().startsWith("epsg:")){const t=Number(o.slice(5));isNaN(t)||0===t||(a=new n({wkid:t}))}else a=l(o)??n.WGS84;else T=!0,a=new n({wkid:3857});C=new i(t,e,s,r),C.spatialReference=a}else T=!0,C=new i({xmin:-.5,ymin:.5-f,xmax:a-.5,ymax:.5,spatialReference:new n({wkid:3857})});const j=c(t,"MRF_META/Rsets"),B=parseInt(j?.getAttribute("scale")||"2",10),L=C.spatialReference,E=new d({origin:new o({x:C.xmin,y:C.ymax,spatialReference:L}),blockWidth:I,blockHeight:A,pyramidBlockWidth:I,pyramidBlockHeight:A,compression:p,pyramidScalingFactor:B}),P=new o({x:C.width/a,y:C.height/f,spatialReference:L}),U=new g({width:a,height:f,extent:C,isPseudoSpatialReference:T,spatialReference:L,bandCount:h,pixelType:b,pixelSize:P,noDataValue:S,storageInfo:E}),v=this._getAuxFullPath(u(s,"DataFile")),q=this._getAuxFullPath(u(s,"IndexFile"));return{rasterInfo:U,files:{mrf:this.url,index:q||this.url.replace(".mrf",".idx"),data:v||this.url.replace(".mrf",x.get(p).blobExtension)}}}_getAuxFullPath(t){if(!t)return null;if(t.includes("\\"))return null;if(t.includes("/"))return t.startsWith(new URL(this.url).origin)?t:null;return`${this.url.slice(0,this.url.lastIndexOf("/"))}/${t}`}async _fetchAuxiliaryData(t){try{const{data:e}=await this.request(this.url+".aux.xml",{responseType:"xml",signal:t?.signal});return f(e)}catch{return null}}};function w(t){if(t.byteLength%16>0)throw new Error("invalid array buffer must be multiples of 16");let e;if(h){const s=new Uint8Array(t),r=new ArrayBuffer(t.byteLength),i=new Uint8Array(r);for(let e=0;e<t.byteLength/4;e++)for(let t=0;t<4;t++)i[4*e+t]=s[4*e+3-t];e=new Uint32Array(r)}else e=new Uint32Array(t);return e}t([s()],b.prototype,"_files",void 0),t([s()],b.prototype,"_storageIndex",void 0),t([s()],b.prototype,"_isBsq",void 0),t([s({type:String,json:{write:!0}})],b.prototype,"datasetFormat",void 0),b=t([r("esri.layers.raster.datasets.MRFRaster")],b);const I=b;export{I as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{decodeBitMask as e}from"./ImageCanvasDecoder.js";import{J as t}from"../../../chunks/Jpg.js";class r{static async decode(r,a=!1){const n=new Uint8Array(r),s=new t;s.parse(n);const{width:o,height:i,numComponents:l,eof:f}=s,h=s.getData(o,i,1!==l),c=o*i;let m,p=null;if(a&&f<n.length-1&&(p=await e(n.subarray(f,-4),c)),1===l&&h.length===o*i){const e=new Uint8Array(h.buffer);m=[e,e,e]}else{m=[];for(let e=0;e<3;e++)m.push(new Uint8Array(c));for(let e=0,t=0;e<c;e++)for(let r=0;r<3;r++)m[r][e]=h[t++]}return{width:o,height:i,pixels:m,mask:p}}}export{r as default};
2
+ import{decodeBitMask as e}from"./ImageCanvasDecoder.js";import{J as t}from"../../../chunks/Jpg.js";class s{static async decode(s,a={}){const n=new Uint8Array(s),r=new t;r.parse(n);const{width:o,height:l,numComponents:i,eof:c}=r,p=a.decodeJpegAsRgb??1!==i,f=r.getData(o,l,p),g=o*l;let h=null;const{applyJpegMask:d=!1}=a;let m;d&&c<n.length-1&&(h=await e(n.subarray(c,-4),g));const u=p?3:i;if(1===u&&f.length===o*l){const e=new Uint8Array(f.buffer);m=[e,e,e]}else{m=[];for(let e=0;e<u;e++)m.push(new Uint8Array(g));for(let e=0,t=0;e<g;e++)for(let s=0;s<u;s++)m[s][e]=f[t++]}return{width:o,height:l,pixels:m,mask:h}}}export{s as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../core/Error.js";import{assertIsSome as t}from"../../../core/maybe.js";import{isAbortError as a}from"../../../core/promiseUtils.js";import{decode as i}from"./ImageCanvasDecoder.js";import r from"./JpgPlus.js";import{load as s,decode as n}from"./Lerc.js";import{decode as o}from"./Lzw.js";import{convertNoDataToMask as l}from"./pixelRangeUtils.js";import{load as c,decode as p}from"./Qb3.js";import f from"./Raw.js";import{decodeTileOrStrip as d,decode as u}from"./TiffDecoder.js";import{isPlatformLittleEndian as h}from"./utils.js";import{inflate as w}from"./Zlib.js";import m from"../../support/PixelBlock.js";import g from"../../support/SimpleBandStatistics.js";async function y(t,a){if(!h)throw new e("rasterCoded:decode","lerc decoder is not supported on big endian platform");await s();const{width:i,height:r,pixelType:o,statistics:l,depthCount:c,noDataValues:p,bandMasks:f,pixels:d,mask:u,validPixelCount:w}=n(t,{inputOffset:a.offset,returnInterleaved:a.returnInterleaved});return new m({width:i,height:r,pixelType:o.toLowerCase(),pixels:d,mask:u,validPixelCount:w,statistics:l.map(({minValue:e,maxValue:t})=>new g(e,t)),bandMasks:f,depthCount:c,noDataValues:p})}async function x(t,a){await c();const i=p(t);if(!i)throw new e("rasterCodec:decode","failed to decode the input data.");const{width:r,height:s,pixels:n,pixelType:o}=i;return new m({width:r,height:s,pixelType:o,pixels:n})}async function k(e,a){const i=await u(e,{...a,noDataValue:a.tiffNoDataValue,matchAllNoData:a.matchAllNoData});t(i);return new m({width:i.width,height:i.height,pixels:i.pixels,pixelType:i.pixelType.toLowerCase(),mask:i.mask,bandMasks:i.bandMasks})}async function b(e,t){const a=await d(e,t.customOptions),i=new m({width:a.width,height:a.height,pixels:a.pixels,pixelType:a.pixelType.toLowerCase(),mask:a.mask});return t.skipStatistics||i.updateStatistics(),i}function C(e,t){const a=t.pixelType||"u8",i=m.getPixelArrayConstructor(a),r="u8"===a?e:new i(e.buffer),s=[],n=t.planes||1;if(1===n)s.push(r);else for(let o=0;o<n;o++){const a=(t.width||1)*(t.height||e.length),l=new i(a);for(let e=0;e<a;e++)l[e]=r[e*n+o];s.push(l)}return new m({width:t.width||1,height:t.height||e.length,pixels:s,pixelType:a})}async function T(e,t){return C(await w(new Uint8Array(e)),t)}function j(e,t){return C(o(e,t.offset,t.eof,!t.isInputBigEndian),t)}function A(e,t){const a=t.format,{pixelTypeCtor:i}=V(t.pixelType),r=(0,f.decode)(e,{width:t.width,height:t.height,pixelType:i,format:a});return new m({width:t.width,height:t.height,pixels:r.pixels,pixelType:t.pixelType,mask:r.mask})}async function U(e,t){const a=await r.decode(e,t.applyJpegMask);return new m({width:a.width,height:a.height,pixels:a.pixels,pixelType:"u8",mask:a.mask})}async function D(e,t,a){const r=await i(e,t,a);return new m(r)}async function v(t,i,r){const s=i.format||M(t),n={...i,format:s},{canvasUsage:o}=i;if("no-canvas"!==o||"png"===s)try{return await D(t,n,r)}catch(l){if(a(l))throw l;if("canvas-only"===o)throw new e("rasterCodec:decode",`failed to decode the input data with canvas for format ${s}`)}return await U(t,n)}function P(t){let a=null;switch(t){case"lerc":a=y;break;case"jpg":case"png":a=v;break;case"bmp":case"gif":a=D;break;case"bsq":case"bip":a=A;break;case"tiff":a=k;break;case"deflate":a=T;break;case"lzw":a=j;break;case"qb3":a=x;break;default:a=()=>{throw new e("rasterCodec:decode",`unsupported raster format ${t}`)}}return a}function V(e){let t=null,a=null;switch(e?e.toLowerCase():"f32"){case"u1":case"u2":case"u4":case"u8":a=255,t=Uint8Array;break;case"u16":a=a||65535,t=Uint16Array;break;case"u32":a=a||2**32-1,t=Uint32Array;break;case"s8":a=a||-128,t=Int8Array;break;case"s16":a=a||-32768,t=Int16Array;break;case"s32":a=a||0-2**31,t=Int32Array;break;default:t=Float32Array}return{pixelTypeCtor:t,noDataValue:a}}function L(e,t="bilinear"){if(!e)return;const{pixels:a,width:i,height:r,mask:s}=e;if(!a||0===a.length)return;const n=i-1,o=r-1,l=[];let c=null;const p=m.getPixelArrayConstructor(e.pixelType);if("nearest"===t){for(const e of a){const t=new p(n*o);for(let a=0;a<o;a++){const r=a*i;for(let i=0;i<n;i++)t[a*n+i]=e[r+i]}l.push(t)}if(null!=s){c=new Uint8Array(n*o);for(let e=0;e<o;e++){const t=e*i;for(let a=0;a<n;a++)c[e*n+a]=s[t+a]}}}else{for(const e of a){const t=new p(n*o);for(let a=0;a<o;a++){const r=a*i;for(let s=0;s<n;s++)t[a*n+s]=(e[r+s]+e[r+s+1]+e[r+i+s]+e[r+i+s+1])/4}l.push(t)}if(s){c=new Uint8Array(n*o);for(let e=0;e<o;e++){const t=e*i;for(let a=0;a<n;a++)c[e*n+a]=Math.min.apply(null,[s[t+a],s[t+a+1],s[t+i+a],s[t+i+a+1]])}}}e.width=n,e.height=o,e.mask=c,e.pixels=l}function M(e){if(!e)return;const t=new Uint8Array(e,0,10);let a;return 255===t[0]&&216===t[1]?a="jpg":137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]?a="png":67===t[0]&&110===t[1]&&116===t[2]&&90===t[3]&&73===t[4]&&109===t[5]&&97===t[6]&&103===t[7]&&101===t[8]&&32===t[9]||76===t[0]&&101===t[1]&&114===t[2]&&99===t[3]&&50===t[4]&&32===t[5]?a="lerc":73===t[0]&&73===t[1]&&42===t[2]&&0===t[3]||77===t[0]&&77===t[1]&&0===t[2]&&42===t[3]||73===t[0]&&73===t[1]&&43===t[2]&&0===t[3]||77===t[0]&&77===t[1]&&0===t[2]&&43===t[3]?a="tiff":71===t[0]&&73===t[1]&&70===t[2]?a="gif":66===t[0]&&77===t[1]?a="bmp":81===t[0]&&66===t[1]&&51===t[2]&&(a="qb3"),a}async function I(t,a={},i){if(null==t)throw new e("rasterCodec:decode","missing encodeddata parameter.");let r=a.format?.toLowerCase();if(!("bsq"!==r&&"bip"!==r||null!=a.width&&null!=a.height))throw new e("rasterCodec:decode","requires width and height in options parameter.");if("tiff"===r&&a.customOptions)return b(t,a);if(!r||"bsq"!==r&&"bip"!==r&&"deflate"!==r&&"lzw"!==r){if(r=M(t),!r){throw String.fromCharCode.apply(null,[...new Uint8Array(t,0,10)]).toLowerCase().includes("error")?new e("rasterCodec:decode","input data contains error"):new e("rasterCodec:decode","unsupported raster format")}a={...a,format:r}}const s=P(r);let n;a.isPoint&&(null!=(a={...a}).width&&a.width++,null!=a.height&&a.height++);const{offsets:o}=a;if(o&&o.length>1){const e=o.map((e,r)=>s(t.slice(e,o[r+1]),a,i)),r=await Promise.all(e);n=r[0],n.pixels=r.map(e=>e.pixels[0]);const l=r.map(e=>e.mask);l.some(e=>null!=e)&&(l.forEach((e,t)=>{l[t]??=new Uint8Array(n.width*n.height).fill(255)}),n.bandMasks=l,n.mask=m.combineBandMasks(l))}else n=await s(t,{...a,offset:o?.[0]??a.offset},i);return"jpg"!==r&&null!=a.noDataValue&&1===n.depthCount&&l(n,a.noDataValue,{customFloatTolerance:a.tolerance}),a.isPoint&&L(n),n.statistics?.length||a.skipStatistics||n.updateStatistics(),n}export{I as decode,M as getFormat};
2
+ import e from"../../../core/Error.js";import{assertIsSome as t}from"../../../core/maybe.js";import{isAbortError as a}from"../../../core/promiseUtils.js";import{decode as i}from"./ImageCanvasDecoder.js";import r from"./JpgPlus.js";import{load as s,decode as n}from"./Lerc.js";import{decode as o}from"./Lzw.js";import{convertNoDataToMask as l}from"./pixelRangeUtils.js";import{load as c,decode as p}from"./Qb3.js";import f from"./Raw.js";import{decodeTileOrStrip as d,decode as u}from"./TiffDecoder.js";import{isPlatformLittleEndian as h}from"./utils.js";import{inflate as w}from"./Zlib.js";import m from"../../support/PixelBlock.js";import g from"../../support/SimpleBandStatistics.js";async function y(t,a){if(!h)throw new e("rasterCoded:decode","lerc decoder is not supported on big endian platform");await s();const{width:i,height:r,pixelType:o,statistics:l,depthCount:c,noDataValues:p,bandMasks:f,pixels:d,mask:u,validPixelCount:w}=n(t,{inputOffset:a.offset,returnInterleaved:a.returnInterleaved});return new m({width:i,height:r,pixelType:o.toLowerCase(),pixels:d,mask:u,validPixelCount:w,statistics:l.map(({minValue:e,maxValue:t})=>new g(e,t)),bandMasks:f,depthCount:c,noDataValues:p})}async function x(t,a){await c();const i=p(t);if(!i)throw new e("rasterCodec:decode","failed to decode the input data.");const{width:r,height:s,pixels:n,pixelType:o}=i;return new m({width:r,height:s,pixelType:o,pixels:n})}async function k(e,a){const i=await u(e,{...a,noDataValue:a.tiffNoDataValue,matchAllNoData:a.matchAllNoData});t(i);return new m({width:i.width,height:i.height,pixels:i.pixels,pixelType:i.pixelType.toLowerCase(),mask:i.mask,bandMasks:i.bandMasks})}async function b(e,t){const a=await d(e,t.customOptions),i=new m({width:a.width,height:a.height,pixels:a.pixels,pixelType:a.pixelType.toLowerCase(),mask:a.mask});return t.skipStatistics||i.updateStatistics(),i}function C(e,t){const a=t.pixelType||"u8",i=m.getPixelArrayConstructor(a),r="u8"===a?e:new i(e.buffer),s=[],n=t.planes||1;if(1===n)s.push(r);else for(let o=0;o<n;o++){const a=(t.width||1)*(t.height||e.length),l=new i(a);for(let e=0;e<a;e++)l[e]=r[e*n+o];s.push(l)}return new m({width:t.width||1,height:t.height||e.length,pixels:s,pixelType:a})}async function T(e,t){return C(await w(new Uint8Array(e)),t)}function j(e,t){return C(o(e,t.offset,t.eof,!t.isInputBigEndian),t)}function A(e,t){const a=t.format,{pixelTypeCtor:i}=V(t.pixelType),r=(0,f.decode)(e,{width:t.width,height:t.height,pixelType:i,format:a});return new m({width:t.width,height:t.height,pixels:r.pixels,pixelType:t.pixelType,mask:r.mask})}async function U(e,t){const a=await r.decode(e,t);return new m({width:a.width,height:a.height,pixels:a.pixels,pixelType:"u8",mask:a.mask})}async function D(e,t,a){const r=await i(e,t,a);return new m(r)}async function v(t,i,r){const s=i.format||I(t),n={...i,format:s},{canvasUsage:o}=i;if("no-canvas"!==o||"png"===s)try{return await D(t,n,r)}catch(l){if(a(l))throw l;if("canvas-only"===o)throw new e("rasterCodec:decode",`failed to decode the input data with canvas for format ${s}`)}return await U(t,n)}function P(t){let a=null;switch(t){case"lerc":a=y;break;case"jpg":case"png":a=v;break;case"bmp":case"gif":a=D;break;case"bsq":case"bip":a=A;break;case"tiff":a=k;break;case"deflate":a=T;break;case"lzw":a=j;break;case"qb3":a=x;break;default:a=()=>{throw new e("rasterCodec:decode",`unsupported raster format ${t}`)}}return a}function V(e){let t=null,a=null;switch(e?e.toLowerCase():"f32"){case"u1":case"u2":case"u4":case"u8":a=255,t=Uint8Array;break;case"u16":a=a||65535,t=Uint16Array;break;case"u32":a=a||2**32-1,t=Uint32Array;break;case"s8":a=a||-128,t=Int8Array;break;case"s16":a=a||-32768,t=Int16Array;break;case"s32":a=a||0-2**31,t=Int32Array;break;default:t=Float32Array}return{pixelTypeCtor:t,noDataValue:a}}function L(e,t="bilinear"){if(!e)return;const{pixels:a,width:i,height:r,mask:s}=e;if(!a||0===a.length)return;const n=i-1,o=r-1,l=[];let c=null;const p=m.getPixelArrayConstructor(e.pixelType);if("nearest"===t){for(const e of a){const t=new p(n*o);for(let a=0;a<o;a++){const r=a*i;for(let i=0;i<n;i++)t[a*n+i]=e[r+i]}l.push(t)}if(null!=s){c=new Uint8Array(n*o);for(let e=0;e<o;e++){const t=e*i;for(let a=0;a<n;a++)c[e*n+a]=s[t+a]}}}else{for(const e of a){const t=new p(n*o);for(let a=0;a<o;a++){const r=a*i;for(let s=0;s<n;s++)t[a*n+s]=(e[r+s]+e[r+s+1]+e[r+i+s]+e[r+i+s+1])/4}l.push(t)}if(s){c=new Uint8Array(n*o);for(let e=0;e<o;e++){const t=e*i;for(let a=0;a<n;a++)c[e*n+a]=Math.min.apply(null,[s[t+a],s[t+a+1],s[t+i+a],s[t+i+a+1]])}}}e.width=n,e.height=o,e.mask=c,e.pixels=l}function I(e){if(!e)return;const t=new Uint8Array(e,0,10);let a;return 255===t[0]&&216===t[1]?a="jpg":137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]?a="png":67===t[0]&&110===t[1]&&116===t[2]&&90===t[3]&&73===t[4]&&109===t[5]&&97===t[6]&&103===t[7]&&101===t[8]&&32===t[9]||76===t[0]&&101===t[1]&&114===t[2]&&99===t[3]&&50===t[4]&&32===t[5]?a="lerc":73===t[0]&&73===t[1]&&42===t[2]&&0===t[3]||77===t[0]&&77===t[1]&&0===t[2]&&42===t[3]||73===t[0]&&73===t[1]&&43===t[2]&&0===t[3]||77===t[0]&&77===t[1]&&0===t[2]&&43===t[3]?a="tiff":71===t[0]&&73===t[1]&&70===t[2]?a="gif":66===t[0]&&77===t[1]?a="bmp":81===t[0]&&66===t[1]&&51===t[2]&&(a="qb3"),a}async function M(t,a={},i){if(null==t)throw new e("rasterCodec:decode","missing encodeddata parameter.");let r=a.format?.toLowerCase();if(!("bsq"!==r&&"bip"!==r||null!=a.width&&null!=a.height))throw new e("rasterCodec:decode","requires width and height in options parameter.");if("tiff"===r&&a.customOptions)return b(t,a);if(!r||"bsq"!==r&&"bip"!==r&&"deflate"!==r&&"lzw"!==r){if(r=I(t),!r){throw String.fromCharCode.apply(null,[...new Uint8Array(t,0,10)]).toLowerCase().includes("error")?new e("rasterCodec:decode","input data contains error"):new e("rasterCodec:decode","unsupported raster format")}a={...a,format:r}}const s=P(r);let n;a.isPoint&&(null!=(a={...a}).width&&a.width++,null!=a.height&&a.height++);const{offsets:o}=a;if(o&&o.length>1){const e=o.map((e,r)=>s(t.slice(e,o[r+1]),a,i)),r=await Promise.all(e);n=r[0],n.pixels=r.map(e=>e.pixels[0]);const l=r.map(e=>e.mask);l.some(e=>null!=e)&&(l.forEach((e,t)=>{l[t]??=new Uint8Array(n.width*n.height).fill(255)}),n.bandMasks=l,n.mask=m.combineBandMasks(l))}else n=await s(t,{...a,offset:o?.[0]??a.offset},i);return"jpg"!==r&&null!=a.noDataValue&&1===n.depthCount&&l(n,a.noDataValue,{customFloatTolerance:a.tolerance}),a.isPoint&&L(n),n.statistics?.length||a.skipStatistics||n.updateStatistics(),n}export{M as decode,I as getFormat};
@@ -3,6 +3,7 @@ import type Point from "../../geometry/Point.js";
3
3
  import type DimensionalDefinition from "../support/DimensionalDefinition.js";
4
4
  import type PixelBlock from "../support/PixelBlock.js";
5
5
  import type { AbortOptions } from "../../core/promiseUtils.js";
6
+ import type { Point as PointJSON } from "../../portal/jsonTypes.js";
6
7
 
7
8
  /**
8
9
  * Specifies how raster values are resampled.
@@ -228,6 +229,50 @@ export interface RasterBandStatistics {
228
229
  count?: number;
229
230
  }
230
231
 
232
+ /**
233
+ * Raster box statistics information
234
+ *
235
+ * @internal
236
+ */
237
+ export interface RasterBandBoxStatistics {
238
+ /**
239
+ * Minimum value of the statistics.
240
+ *
241
+ * @internal
242
+ */
243
+ min: number;
244
+ /**
245
+ * Maximum value of the statistics.
246
+ *
247
+ * @internal
248
+ */
249
+ max: number;
250
+ /**
251
+ * Average of the statistics.
252
+ *
253
+ * @internal
254
+ */
255
+ avg: number;
256
+ /**
257
+ * Median value of the statistics.
258
+ *
259
+ * @internal
260
+ */
261
+ median: number;
262
+ /**
263
+ * First quartile (or lower Quartile) of the statistics.
264
+ *
265
+ * @internal
266
+ */
267
+ quartile1: number;
268
+ /**
269
+ * Third quartile (or upper quartile) of the statistics.
270
+ *
271
+ * @internal
272
+ */
273
+ quartile3: number;
274
+ }
275
+
231
276
  /**
232
277
  * Raster histogram information returned that meets the specified [ImageHistogramParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/)
233
278
  * from the [ImageryLayer.computeHistograms()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#computeHistograms) or [ImageryLayer.computeStatisticsHistograms()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#computeStatisticsHistograms) method.
@@ -520,4 +565,24 @@ export interface RasterIdentifyOptions extends AbortOptions {
520
565
  * @since 5.0
521
566
  */
522
567
  transposedVariableName?: string;
568
+ }
569
+
570
+ /**
571
+ * Pixel location and value
572
+ *
573
+ * @internal
574
+ */
575
+ export interface PixelLocationAndValue {
576
+ /**
577
+ * Pixel location
578
+ *
579
+ * @internal
580
+ */
581
+ location: PointJSON;
582
+ /**
583
+ * Pixel value
584
+ *
585
+ * @internal
586
+ */
587
+ value: number[];
523
588
  }
@@ -59,9 +59,15 @@ export default class AggregateField extends JSONSupport {
59
59
  */
60
60
  accessor alias: string | null | undefined;
61
61
  /**
62
- * Indicates whether the field was created internally by the JS API's rendering engine for
63
- * default [FeatureReductionCluster](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/) visualizations. You should avoid
64
- * setting or changing this value. If `true`, then all other properties of the AggregateField are read-only.
62
+ * Indicates whether the field is automatically generated by the JS API's rendering engine for
63
+ * default [FeatureReductionCluster](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/) visualizations. Auto-generated aggregate fields
64
+ * are discarded and replaced when the underlying layer's renderer changes.
65
+ *
66
+ * Set this property to `false` to retain an auto-generated aggregate field when the underlying layer's
67
+ * renderer changes. To retain an auto-generated cluster renderer that uses this field, also set
68
+ * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) to `false` on the
69
+ * [cluster renderer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/#renderer). When `true`, all other
70
+ * properties of the AggregateField are read-only.
65
71
  *
66
72
  * @default false
67
73
  * @since 4.25
@@ -476,9 +476,14 @@ export interface FeatureReductionClusterProperties extends Partial<Pick<FeatureR
476
476
  * See [Styles and configurations](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/#styles-and-configurations)
477
477
  * for more information about this behavior. In this scenario, the renderer will be persisted when
478
478
  * the layer is saved to the web map, but it will be flagged as "auto generated" in the
479
- * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) property of the
480
- * the [Renderer.authoringInfo](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/#authoringInfo) object.
481
- * All auto generated renderers are discarded and replaced each time the underlying layer's renderer is changed.
479
+ * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) property of the [Renderer.authoringInfo](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/#authoringInfo) object.
480
+ * By default, the renderer and any auto-generated [AggregateFields](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/) it uses are
481
+ * discarded and replaced each time the underlying layer's renderer changes.
482
+ *
483
+ * To retain an auto-generated cluster renderer as an explicit renderer, set the cluster renderer's
484
+ * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) property to `false`.
485
+ * To retain an auto-generated aggregate field used by that renderer, set its
486
+ * [AggregateField.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/#isAutoGenerated) property to `false`.
482
487
  *
483
488
  * This property allows you to override the auto generated cluster styling using any
484
489
  * renderer type suitable for point geometries. For example, if you want to render clusters
@@ -1192,9 +1197,14 @@ export default class FeatureReductionCluster extends FeatureReductionClusterSupe
1192
1197
  * See [Styles and configurations](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/#styles-and-configurations)
1193
1198
  * for more information about this behavior. In this scenario, the renderer will be persisted when
1194
1199
  * the layer is saved to the web map, but it will be flagged as "auto generated" in the
1195
- * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) property of the
1196
- * the [Renderer.authoringInfo](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/#authoringInfo) object.
1197
- * All auto generated renderers are discarded and replaced each time the underlying layer's renderer is changed.
1200
+ * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) property of the [Renderer.authoringInfo](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/#authoringInfo) object.
1201
+ * By default, the renderer and any auto-generated [AggregateFields](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/) it uses are
1202
+ * discarded and replaced each time the underlying layer's renderer changes.
1203
+ *
1204
+ * To retain an auto-generated cluster renderer as an explicit renderer, set the cluster renderer's
1205
+ * [AuthoringInfo.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/renderers/support/AuthoringInfo/#isAutoGenerated) property to `false`.
1206
+ * To retain an auto-generated aggregate field used by that renderer, set its
1207
+ * [AggregateField.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/#isAutoGenerated) property to `false`.
1198
1208
  *
1199
1209
  * This property allows you to override the auto generated cluster styling using any
1200
1210
  * renderer type suitable for point geometries. For example, if you want to render clusters
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as e}from"tslib";import s from"../../request.js";import r from"../../core/Accessor.js";import{result as t}from"../../core/asyncUtils.js";import o from"../../core/Logger.js";import{getOrCreateMapValue as a}from"../../core/MapUtils.js";import{whenOrAbort as l,isAbortError as n}from"../../core/promiseUtils.js";import{subclass as i}from"../../core/accessorSupport/decorators.js";import{property as h}from"../../core/accessorSupport/decorators/property.js";import{parse as c}from"./arcgisLayerUrl.js";let u=class extends r{constructor(e){super(e),this._abortController=new AbortController,this._pendingBatches=new Map,this._flushHandle=void 0,this._flushDeadline=null,this._flushInProgress=!1,this._flushRequested=!1}async fetch(e,s){const r=c(e?.url)?.url.path;if(!e||!r)return null;const t=f(e,r,s),o=e.layerId,n=a(this._pendingBatches,m(t),()=>({...t,layers:new Map})),i=a(n.layers,o,()=>({resolvers:[],serverGen:s.serverGen}));if(i.serverGen!==s.serverGen)throw new Error(`I3SExtractChanges: serverGen mismatch for layer ${e.title} (${o}). Expected ${i.serverGen}, got ${s.serverGen}.`);const h=Promise.withResolvers();return i.resolvers.push(h),this._scheduleFlush(),l(h.promise,s)}destroy(){clearTimeout(this._flushHandle),this._flushHandle=void 0,this._flushDeadline=null,this._flushRequested=!1;for(const e of this._pendingBatches.values())this._resolveBatch(e,null);this._pendingBatches.clear(),this._abortController.abort()}_scheduleFlush(){if(!this.batchingEnabled)return void this._flushSerially().catch(()=>{});const e=Date.now();this._flushDeadline??=e+g,clearTimeout(this._flushHandle);const s=Math.min(y,Math.max(0,this._flushDeadline-e));this._flushHandle=setTimeout(()=>{this._flushHandle=void 0,this._flushDeadline=null,this._flushSerially().catch(()=>{})},s)}async _flushSerially(){if(this._flushInProgress)this._flushRequested=!0;else{this._flushInProgress=!0;try{do{this._flushRequested=!1,await this._flush()}while(this._flushRequested)}finally{this._flushInProgress=!1}}}async _flush(){const e=Array.from(this._pendingBatches.values());this._pendingBatches.clear(),await Promise.all(e.map(e=>this._fetchBatch(e)))}async _fetchBatch(e){const{layers:r}=e,o=Array.from(r.keys()),a={...e.customParameters,f:"json",returnIdsOnly:!0,layers:JSON.stringify(o),returnUpdates:!0,returnDeletes:e.returnGeometryChanges,returnInserts:e.returnGeometryChanges,layerServerGens:JSON.stringify(Array.from(r,([e,{serverGen:s}])=>({id:e,serverGen:s})))};null!=e.apiKey&&(a.token=e.apiKey),e.fieldsToCompare.length>0&&(a.fieldsToCompare=JSON.stringify({fields:e.fieldsToCompare}));const l=await t(s(`${e.serviceUrl}/extractChanges`,{method:"post",query:a,timeout:p,signal:this._abortController.signal}));if(!l.ok)return n(l.error)||this._logUnavailable(),void this._resolveBatch(e,null);const i=new Map(l.value.data?.edits?.map(e=>[e.id,e]));for(const[s,t]of r){const r=i.get(s),o=null!=r?this._getChangedObjectIdsFromExtractChanges(r,e.returnGeometryChanges):new d;for(const e of t.resolvers)e.resolve(o)}}_resolveBatch(e,s){for(const r of e.layers.values())for(const e of r.resolvers)e.resolve(s)}_logUnavailable(){o.getLogger(this.layer).warn("extractChanges:unavailable",this.layer.title,": could not obtain edited features that are not cached in the scene service. Display of features may not be up to date with the latest edits. Consider re-caching the scene service.")}_getChangedObjectIdsFromExtractChanges(e,s){const r=e.objectIds,t=e.fieldUpdates,o=r?.adds??[],a=r?.updates??[],l=r?.deletes??[];return new d([...o,...a,...l],s?[...o,...t??a,...l]:[])}};e([h()],u.prototype,"layer",void 0),e([h()],u.prototype,"batchingEnabled",void 0),u=e([i("esri.layers.support.I3SExtractChanges")],u);class d{constructor(e=[],s=[]){this.attributeChangedObjectIds=e,this.geometryChangedObjectIds=s}}function f(e,s,r){const t=r.returnGeometryChanges?e.infoFor3D:null,o=null!=t?[...new Set([...Object.values(t.transformFieldRoles),t.sourceHashField])].sort():[];return{serviceUrl:s,customParameters:e.customParameters?{...e.customParameters}:{},apiKey:e.apiKey,returnGeometryChanges:r.returnGeometryChanges,fieldsToCompare:o}}function m(e){return JSON.stringify([e.serviceUrl,Object.entries(e.customParameters).sort(([e],[s])=>e.localeCompare(s)),e.apiKey??null,e.returnGeometryChanges,e.fieldsToCompare])}const p=1e4,y=200,g=600;export{d as I3SChangedObjectIds,u as I3SExtractChanges,g as extractChangesFetchMaxWait,y as extractChangesFetchQuietTime};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "5.2.0-next.80",
3
+ "version": "5.2.0-next.82",
4
4
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -20,13 +20,13 @@
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
22
  "@amcharts/amcharts5": "~5.20.2",
23
- "@arcgis/toolkit": "^5.2.0-next.75",
23
+ "@arcgis/toolkit": "^5.2.0-next.77",
24
24
  "@esri/arcgis-html-sanitizer": "~4.1.0",
25
25
  "@esri/calcite-components": "^5.2.0-next.50",
26
26
  "@vaadin/grid": "~25.2.8",
27
27
  "@zip.js/zip.js": "~2.8.51",
28
28
  "luxon": "~3.7.2",
29
- "marked": "~18.0.9",
29
+ "marked": "~18.0.10",
30
30
  "tslib": "^2.8.1"
31
31
  }
32
32
  }
@@ -117,9 +117,14 @@ export default class AuthoringInfo extends JSONSupport {
117
117
  */
118
118
  accessor focus: RelationshipFocus | null | undefined;
119
119
  /**
120
- * Indicates whether the renderer was created internally by the JS API's rendering engine for
121
- * default [FeatureReductionCluster](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/) visualizations. You should avoid
122
- * setting or changing this value.
120
+ * Indicates whether the renderer is automatically generated by the JS API's rendering engine for
121
+ * default [FeatureReductionCluster](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureReductionCluster/) visualizations. Auto-generated cluster renderers
122
+ * are discarded and replaced when the underlying layer's renderer changes.
123
+ *
124
+ * Set this property to `false` to retain an auto-generated cluster renderer as an explicit renderer
125
+ * when the underlying layer's renderer changes. To retain any auto-generated
126
+ * [AggregateFields](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/) used by that renderer, also set their
127
+ * [AggregateField.isAutoGenerated](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AggregateField/#isAutoGenerated) property to `false`.
123
128
  *
124
129
  * @default false
125
130
  */
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const c="20260818",a="c91f9b0c0f75fa3a2ab449092831863cd253ece3";export{c as buildDate,a as commitHash};
2
+ const c="20260820",b="9224c7c8ac7c7fbcb431e951c077049cc9e0d64b";export{c as buildDate,b as commitHash};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,globalRotation as n,getAnimationParams as p,handleAbsoluteAnchor as m,handleMarker as c,handleRelativeAnchor as f,getFrameTranslation as y,translate as d,getStaticParam as h,shouldUseAnimatedPath as u}from"./animationUtils.js";import{forEachSymbolLayer as v,CIMSymbolHelper as O}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as g}from"./constants.js";import{defaultCIMValues as S}from"./defaultCIMValues.js";import{fitVectorMarker as _}from"./fitVectorMarker.js";import{OverrideHelper as M}from"./OverrideHelper.js";import{hasRichTextFormattingTags as C}from"./richTextUtils.js";import{getExtent as k,getSDFMetrics as x,getSDFDimensions as b}from"./SDFHelper.js";import{CIMSymbolUnits as P}from"./types.js";import{colorToArray as z,normalizeAlpha as E,getSize as I,isCIMMarkerStrokePlacement as L,hasStrokeLayer as V,getTintColor as N,getNumericValue as R,normalizePrimitiveOverrideProps as T,getDefaultCIMValue as G,getEnum as A,getFillColor as w,getStrokeColor as F,fromCIMFontDecoration as X,fromCIMFontStyle as j,getStrokeWidth as Y,fromCIMVerticalAlignment as W,fromCIMHorizontalAlignment as D,getTextCasing as U,isValidCIMValue as H,uncapitalize as J}from"./utils.js";import{EffectHelper as B}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as q,randomInsidePolygonTextureSize as K}from"../../views/2d/engine/webgl/definitions.js";const Q=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function Z(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class ${constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=z(r)),r=E(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=_(e))}const i=e.effects;let o=0;const a=I(e)??0;if("CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1),le(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let s={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};s=n(s),s=p(this._poMap,e,s);const m="CIMPolygonSymbol"===e.type;let c=r.length;for(;c--;){const l=r[c];if(!l||!1===l.enable)continue;let n;i?.length&&(n=[...i]);const p=l.effects;p?.length&&(i?n.push(...p):n=[...p]);let f=null;if(n){f=[];for(const e of n){const t=M.findEffectOverrides(e,this._primitiveOverrides);t&&f.push(t)}}const y=[];switch(M.findApplicableOverrides(l,this._primitiveOverrides,y),l.type){case"CIMSolidFill":this._analyzeSolidFill(l,f,s,V(r));break;case"CIMPictureFill":this._analyzePictureFill(l,f,s);break;case"CIMHatchFill":this._analyzeHatchFill(l,f,s);break;case"CIMGradientFill":this._analyzeGradientFill(l,f);break;case"CIMSolidStroke":this._analyzeSolidStroke(l,f,m,a,s);break;case"CIMPictureStroke":this._analyzePictureStroke(l,f,m,a,s);break;case"CIMGradientStroke":this._analyzeGradientStroke(l,f,m,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=Z(l));const r=[],i=l.primitiveName;i&&r.push(i);const n=m&&L(l.markerPlacement);this._analyzeMarker(l,f,null,r,o,a,t,[],s,!1,n);break}default:Q().error("Cannot analyze CIM layer",l.type)}}}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=E(e.color),l=p(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...g,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:pe(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=N(e),s=R(e.height,S.CIMPictureFill.height);let l=R(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const n={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},m=p(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",R(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:pe(m)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=p(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=T(s);let n=[255,255,255,1],m=!1;if(e.lineSymbol?.symbolLayers)for(const p of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==p.type)continue;const e=p.primitiveName??i;m||!e||p.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(n=E(p.color),n=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",n),m=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:G(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:n,height:this._getValueOrOverrideExpression(o,i,"Separation",R(e.separation,S.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",R(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!m,animationParams:pe(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:p}=e,m=S.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,p)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(p,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(p,n,"Angle",R(r,m.angle)),gradientType:this._getValueOrOverrideExpression(p,n,"GradientType",s??m.gradientType),interval:this._getValueOrOverrideExpression(p,n,"Interval",R(l,"CIMFixedColorRamp"===c.type?c.colors.length:m.interval)),gradientSize:this._getValueOrOverrideExpression(p,n,"GradientSize",R(o,m.gradientSize)),gradientSizeUnits:"Absolute"===a?P.Absolute:"Relative"===a?P.Relative:m.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>M.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>M.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=R(o.width,S.CIMSolidStroke.width),n=A(o.capStyle,S.CIMSolidStroke.capstyle),p=A(o.joinStyle,S.CIMSolidStroke.joinstyle),m=o.miterLimit;this._cimLayers.push({type:"outlineFill",name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",E(i.color)),effects:a,outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",E(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",p),miterLimit:m&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",m),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=E(e.color),n=R(e.width,S.CIMSolidStroke.width),m=A(e.capStyle,S.CIMSolidStroke.capstyle),c=A(e.joinStyle,S.CIMSolidStroke.joinstyle),f=e.miterLimit;let y,d,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,d=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,g=p(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:te(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:d,sampleAlphaOnly:!0,animationParams:pe(g)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=N(e),n=R(e.width,S.CIMPictureStroke.width),m=A(e.capStyle,S.CIMPictureStroke.capstyle),c=A(e.joinStyle,S.CIMPictureStroke.joinstyle),f=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},d=p(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:te(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:pe(d)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:p,type:m}=e,c=S.CIMGradientStroke,f=R(e.width,c.width),y=A(e.capStyle,c.capstyle),d=A(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(p,m)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(m,p,"Width",f),cap:this._getValueOrOverrideExpression(m,p,"CapStyle",y),join:this._getValueOrOverrideExpression(m,p,"JoinStyle",d),miterLimit:h&&this._getValueOrOverrideExpression(m,p,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(m,p,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(m,p,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(m,p,"Interval",R(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(m,p,"GradientSize",R(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?P.Absolute:"Relative"===s?P.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,n,y=!1,d=!1){y||=!!e.colorLocked;let h=n;if(h=m(e,h),h=c(this._poMap,e,h),h=f(e,h),h=p(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=R(e.size,S.CIMVectorMarker.size),v=R(e.rotation),O=R(e.offsetX),g=R(e.offsetY),{primitiveName:_,type:M}=e,C=this._getValueOrOverrideExpression(M,_,"Size",u),k=this._getValueOrOverrideExpression(M,_,"Rotation",v),x=this._getValueOrOverrideExpression(M,_,"OffsetX",O),b=this._getValueOrOverrideExpression(M,_,"OffsetY",g);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,C,k,x,b,l,h,y,d);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,C,k,x,b,l,h,s,y,d)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let p,m;if("Random"===o.gridType){const e=a(K),t=Math.max(Math.floor(e/l),1);p=n*Math.max(Math.floor(e/n),1);m=t*l/p}else o.shiftOddRows?(p=2*n,m=l/n*.5):(p=n,m=l/n);const c=N(e),f="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:{...e,effects:e.effects?.filter(e=>!ae(e))},overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:f,colorLocked:r,effects:t,color:c,height:p,scaleX:m,angle:o.gridAngle??0,offsetX:R(o.offsetX),offsetY:R(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:pe(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,p,m,c,f,y,d,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=R(e.scaleX,1);const S=N(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(R(e.size)/t)}const C=[...o];let k;e.primitiveName&&C.push(e.primitiveName),u||_?k={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(k=r(e),k.markerPlacement=null);const x={type:"sprite-rasterization-param",resource:k,overrides:this._getMaterialOverrides(C,O)};_&&x.overrides.push(..._.overrides);const b=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:x,colorLocked:d,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:p,offsetX:m,offsetY:c,transform:{type:"cim-marker-transform-param",params:f},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:pe(y),baseSize:b})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,n,p,m,c,f,u,v){const O=e.markerGraphics;if(!O)return;const g=e.frame;let S=0;S=g?g.ymax-g.ymin:a;const _=!!e.scaleSymbolsProportionally;if(S){const t={offsetX:n,offsetY:p,rotation:l,size:s,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:_};m=[...m,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const M of O)if(M){const s=M.symbol;if(!s)continue;const l=M.primitiveName;l&&i.push(l);let n,p=c;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&g){let t=0,r=0;const i=M.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(g.xmin+g.xmax),r+=i.y-.5*(g.ymin+g.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):g&&(t-=(g.xmax-g.xmin)*o.x,r-=(g.ymax-g.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:_};n=[...m,s]}const O=M.geometry,[C,k]=y(O,g);switch(0===C&&0===k||(p=d(p,C,k)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":f||oe(s)?(p={...p,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:h([0,0]),rotation:h(0),scale:h(S),parent:c.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,M,i,o,a,n??m,p,S,u,v)):this._analyzeMultiLayerGraphic(e,t,r,M,i,o,a,n??m,p,S,u,v);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,M,i,o,a,n??m,u)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,p,m,c){const f=i.symbol,y=f.symbolLayers;if(y){if(!ie(y)||u(n))return se(y)?(v(f,e=>{e.colorLocked&&(m=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,p,m,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,m,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,p,m,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,m,c,f){const y=i.symbol,d=y.symbolLayers;if(!d)return;const h=B.applyEffects(y.effects,i.geometry);if(!h)return;let u=d.length;for(;u--;){const y=d[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=B.applyEffects(y.effects,h),d=k(o);if(!d)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:g,anchorX:_,anchorY:M,widthRatio:C,sdfPaddingRatio:P,sdfTextureSize:z}=x(d,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),I="CIMSolidFill"===y.type,L={type:"sdf",geometry:o,sdfPaddingRatio:P,asFill:I,sdfTextureSize:z},{path:V}=y,N=I?E(w(y)):null==V?E(F(y)):[0,0,0,0],T=I?[0,0,0,0]:E(F(y));if(!I&&!O)break;const G=i.primitiveName;let A=null;I&&!y.colorLocked&&(A=this._maybeGetValueOrOverrideExpression(G,"FillColor"));let X=null;I||y.colorLocked||(X=this._maybeGetValueOrOverrideExpression(G,"StrokeColor"));const j=A??this._getValueOrOverrideExpression(y.type,v,"Color",N),Y=X??this._getValueOrOverrideExpression(y.type,v,"Color",T),W=this._maybeGetValueOrOverrideExpression(G,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=V?{type:"sprite-rasterization-param",resource:{type:"path",path:V,asFill:I},overrides:[]}:{type:"sprite-rasterization-param",resource:L,overrides:[]},U=p(this._poMap,y,n),H=R(e.size,S.CIMVectorMarker.size),J=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",H);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:_,y:M},isAbsoluteAnchorPoint:u,size:m,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:m,widthRatio:C,rotateClockwise:!1,referenceSize:s,sizeRatio:g,color:j,outlineColor:Y,outlineWidth:W,isOutline:f,markerPlacement:r,animationParams:pe(U),isStroke:"CIMSolidFill"!==y.type,baseSize:J,...b(o,z,P)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){Q().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,n,c,f)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const p=[];M.findApplicableOverrides(i,this._primitiveOverrides,p);const m=i.geometry;if(!("x"in m)||!("y"in m))return;const c=i.symbol,f=X(c),y=j(c.fontStyleName),d=t(c.fontFamilyName);c.font={family:d,decoration:f,...y};const h=R(c.height,S.CIMTextSymbol.height),u=R(c.angle),v=R(c.offsetX),O=R(c.offsetY),{haloSymbol:g}=c,_=R(c.haloSize,0);let k=[0,0,0,0];if(g?.symbolLayers?.length){const e=g.symbolLayers;for(const t of e)if(t.color){k=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",E(t.color));break}}const x=i.primitiveName;let b=[0,0,0,1],P=[0,0,0,0],z=0,I=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)P=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",E(t.color)),z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",Y(t)??0);else if("CIMSolidFill"===t.type){const r=E(t.color);I=I??!!t.colorLocked,b=this._getValueOrOverrideExpression("CIMSolidFill",e??x,"Color",r)}}let L=null,V=null,N=null,T=null,G=null;x&&(L=this._maybeGetValueOrOverrideExpression(x,"TextSize"),V=this._maybeGetValueOrOverrideExpression(x,"TextAngle"),N=this._maybeGetValueOrOverrideExpression(x,"TextOffsetX"),T=this._maybeGetValueOrOverrideExpression(x,"TextOffsetY"),I||(G=this._maybeGetValueOrOverrideExpression(x,"FillColor")));const A=G??b;let w=null,F=null,U=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?w=E(e.color):"CIMSolidStroke"===e.type&&(F=E(e.color),U=R(e.width,S.CIMSolidStroke.width))}}const H=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==H)return;const{fontStyleName:J}=c,B=d+(J?"-"+J.toLowerCase():"-regular"),q=this._getMaterialOverrides(o,c.type);q.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(q,i);const K={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName,supportsRichText:C(i.textString??"")||q.some(e=>"textString"===e.propertyName)},overrides:q};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:K,colorLocked:!!n||!!I,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:B,decoration:f,haloSize:_,haloColor:k,weight:y.weight,style:y.style,size:L??h,angle:V??u,offsetX:N??v,offsetY:T??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:D(c.horizontalAlignment),verticalAlignment:W(c.verticalAlignment),text:H,color:A,outlineColor:P,outlineSize:z,backgroundColor:w,borderLineColor:F,borderLineWidth:U,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=U(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,p,m,c,f){const y=ee(e,i),d=e.primitiveName,h=this._analyzeMaterialOverrides(d,["Rotation","OffsetX","OffsetY"]),u=T(h),[v,g,_]=O.getTextureAnchor(y,this._resourceManager,q),M=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==d||!["rotation","offsetX","offsetY"].includes(e.propertyName));M.push(...u);const C={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},k=R(e.size,S.CIMVectorMarker.size),x=this._getValueOrOverrideExpression(e.type,d,"Size",k);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:C,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:v,y:g},isAbsoluteAnchorPoint:!1,size:m,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:m,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:_/o(e.size),isOutline:f,markerPlacement:r,animationParams:pe(p),baseSize:x})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return M.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:ne(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return M.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:ne(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,p,m){const c=i.geometry,f=o[0],y=o[1],d=k(c);if(!d)return;const h="Relative"!==e.anchorPointUnits,u=R(f.width,S.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:g,widthRatio:_,sdfPaddingRatio:M,sdfTextureSize:C}=x(d,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:b}=y,P=y.primitiveName,z=f.primitiveName,I=i.primitiveName;let L=null;y.colorLocked||p||(L=this._maybeGetValueOrOverrideExpression(I,"FillColor"));const V=L??this._getValueOrOverrideExpression(y.type,P,"Color",E(y.color));let N=null;f.colorLocked||p||(N=this._maybeGetValueOrOverrideExpression(I,"StrokeColor"));const T=N??this._getValueOrOverrideExpression(f.type,z,"Color",E(f.color)),G=this._maybeGetValueOrOverrideExpression(I,"StrokeWidth")??this._getValueOrOverrideExpression(f.type,z,"Width",u),A={type:"sprite-rasterization-param",resource:b?{type:"path",path:b,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:C,sdfPaddingRatio:M,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:A,colorLocked:p,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:g},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:_,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:V,outlineColor:T,outlineWidth:G,isOutline:m,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!H(i)&&(i=G(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=T(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=G(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function ee(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function te(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function re(e,t){if(!t||0===t.length)return e;const i=r(e);return M.applyOverrides(i,t),i}const ie=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function oe(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ae(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectRadial"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type}function se(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function le(e,t){if((t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)||t?.some(e=>"CIMGeometricEffectCircularSector"===e.type))&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function ne(e){return r(e).map(e=>({...e,propertyName:J(e.propertyName)}))}function pe(e){return u(e)?{type:"animation-params",params:e}:null}export{$ as CIMAnalyzer,re as analyzeCIMResource};
2
+ import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,globalRotation as n,getAnimationParams as p,handleAbsoluteAnchor as m,handleMarker as c,handleRelativeAnchor as f,getFrameTranslation as y,translate as d,getStaticParam as h,shouldUseAnimatedPath as u}from"./animationUtils.js";import{forEachSymbolLayer as v,CIMSymbolHelper as O}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as g}from"./constants.js";import{defaultCIMValues as S}from"./defaultCIMValues.js";import{fitVectorMarker as _}from"./fitVectorMarker.js";import{OverrideHelper as M}from"./OverrideHelper.js";import{hasRichTextFormattingTags as C}from"./richTextUtils.js";import{getExtent as k,getSDFMetrics as x,getSDFDimensions as b}from"./SDFHelper.js";import{CIMSymbolUnits as P}from"./types.js";import{colorToArray as z,normalizeAlpha as E,getSize as I,isCIMMarkerStrokePlacement as L,hasStrokeLayer as V,getTintColor as N,getNumericValue as R,normalizePrimitiveOverrideProps as T,getDefaultCIMValue as G,getEnum as A,getFillColor as w,getStrokeColor as F,fromCIMFontDecoration as X,fromCIMFontStyle as j,getStrokeWidth as Y,fromCIMVerticalAlignment as W,fromCIMHorizontalAlignment as D,getTextCasing as U,isValidCIMValue as H,uncapitalize as J}from"./utils.js";import{EffectHelper as B}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as q,randomInsidePolygonTextureSize as K}from"../../views/2d/engine/webgl/definitions.js";const Q=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function Z(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class ${constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=z(r)),r=E(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=_(e))}const i=e.effects;let o=0;const a=I(e)??0;if("CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1),ne(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let s={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:l(e),hasShiftAnimation:!1,hasMotionAnimations:!1};s=n(s),s=p(this._poMap,e,s);const m="CIMPolygonSymbol"===e.type;let c=r.length;for(;c--;){const l=r[c];if(!l||!1===l.enable)continue;let n;i?.length&&(n=[...i]);const p=l.effects;p?.length&&(i?n.push(...p):n=[...p]);let f=null;if(n){f=[];for(const e of n){const t=M.findEffectOverrides(e,this._primitiveOverrides);t&&f.push(t)}}const y=[];M.findApplicableOverrides(l,this._primitiveOverrides,y);const d=this._cimLayers.length;switch(l.type){case"CIMSolidFill":this._analyzeSolidFill(l,f,s,V(r));break;case"CIMPictureFill":this._analyzePictureFill(l,f,s);break;case"CIMHatchFill":this._analyzeHatchFill(l,f,s);break;case"CIMGradientFill":this._analyzeGradientFill(l,f);break;case"CIMSolidStroke":this._analyzeSolidStroke(l,f,m,a,s);break;case"CIMPictureStroke":this._analyzePictureStroke(l,f,m,a,s);break;case"CIMGradientStroke":this._analyzeGradientStroke(l,f,m,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=Z(l));const r=[],i=l.primitiveName;i&&r.push(i);const n=m&&L(l.markerPlacement);this._analyzeMarker(l,f,null,r,o,a,t,[],s,!1,n);break}default:Q().error("Cannot analyze CIM layer",l.type)}if(f?.some(({effect:e})=>se(e)))for(let e=d;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=E(e.color),l=p(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...g,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:me(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=N(e),s=R(e.height,S.CIMPictureFill.height);let l=R(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const n={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},m=p(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",R(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:me(m)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=p(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=T(s);let n=[255,255,255,1],m=!1;if(e.lineSymbol?.symbolLayers)for(const p of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==p.type)continue;const e=p.primitiveName??i;m||!e||p.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(n=E(p.color),n=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",n),m=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:G(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:n,height:this._getValueOrOverrideExpression(o,i,"Separation",R(e.separation,S.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",R(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",R(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",R(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!m,animationParams:me(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:p}=e,m=S.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,p)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(p,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(p,n,"Angle",R(r,m.angle)),gradientType:this._getValueOrOverrideExpression(p,n,"GradientType",s??m.gradientType),interval:this._getValueOrOverrideExpression(p,n,"Interval",R(l,"CIMFixedColorRamp"===c.type?c.colors.length:m.interval)),gradientSize:this._getValueOrOverrideExpression(p,n,"GradientSize",R(o,m.gradientSize)),gradientSizeUnits:"Absolute"===a?P.Absolute:"Relative"===a?P.Relative:m.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>M.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>M.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=R(o.width,S.CIMSolidStroke.width),n=A(o.capStyle,S.CIMSolidStroke.capstyle),p=A(o.joinStyle,S.CIMSolidStroke.joinstyle),m=o.miterLimit;this._cimLayers.push({type:"outlineFill",name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",E(i.color)),effects:a,effectsChangeGeometryType:a.some(({effect:e})=>se(e))||s.some(({effect:e})=>se(e)),outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",E(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",p),miterLimit:m&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",m),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=E(e.color),n=R(e.width,S.CIMSolidStroke.width),m=A(e.capStyle,S.CIMSolidStroke.capstyle),c=A(e.joinStyle,S.CIMSolidStroke.joinstyle),f=e.miterLimit;let y,d,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,d=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,g=p(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:te(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:d,sampleAlphaOnly:!0,animationParams:me(g)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=N(e),n=R(e.width,S.CIMPictureStroke.width),m=A(e.capStyle,S.CIMPictureStroke.capstyle),c=A(e.joinStyle,S.CIMPictureStroke.joinstyle),f=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},d=p(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",m),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:te(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:me(d)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:p,type:m}=e,c=S.CIMGradientStroke,f=R(e.width,c.width),y=A(e.capStyle,c.capstyle),d=A(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(p,m)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(m,p,"Width",f),cap:this._getValueOrOverrideExpression(m,p,"CapStyle",y),join:this._getValueOrOverrideExpression(m,p,"JoinStyle",d),miterLimit:h&&this._getValueOrOverrideExpression(m,p,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(m,p,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(m,p,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(m,p,"Interval",R(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(m,p,"GradientSize",R(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?P.Absolute:"Relative"===s?P.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,n,y=!1,d=!1){y||=!!e.colorLocked;let h=n;if(h=m(e,h),h=c(this._poMap,e,h),h=f(e,h),h=p(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=R(e.size,S.CIMVectorMarker.size),v=R(e.rotation),O=R(e.offsetX),g=R(e.offsetY),{primitiveName:_,type:M}=e,C=this._getValueOrOverrideExpression(M,_,"Size",u),k=this._getValueOrOverrideExpression(M,_,"Rotation",v),x=this._getValueOrOverrideExpression(M,_,"OffsetX",O),b=this._getValueOrOverrideExpression(M,_,"OffsetY",g);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,C,k,x,b,l,h,y,d);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,C,k,x,b,l,h,s,y,d)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let p,m;if("Random"===o.gridType){const e=a(K),t=Math.max(Math.floor(e/l),1);p=n*Math.max(Math.floor(e/n),1);m=t*l/p}else o.shiftOddRows?(p=2*n,m=l/n*.5):(p=n,m=l/n);const c=N(e),f="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:{...e,effects:e.effects?.filter(e=>!ae(e))},overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:f,colorLocked:r,effects:t,color:c,height:p,scaleX:m,angle:o.gridAngle??0,offsetX:R(o.offsetX),offsetY:R(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:me(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,p,m,c,f,y,d,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=R(e.scaleX,1);const S=N(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(R(e.size)/t)}const C=[...o];let k;e.primitiveName&&C.push(e.primitiveName),u||_?k={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(k=r(e),k.markerPlacement=null);const x={type:"sprite-rasterization-param",resource:k,overrides:this._getMaterialOverrides(C,O)};_&&x.overrides.push(..._.overrides);const b=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:x,colorLocked:d,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:p,offsetX:m,offsetY:c,transform:{type:"cim-marker-transform-param",params:f},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:me(y),baseSize:b})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,n,p,m,c,f,u,v){const O=e.markerGraphics;if(!O)return;const g=e.frame;let S=0;S=g?g.ymax-g.ymin:a;const _=!!e.scaleSymbolsProportionally;if(S){const t={offsetX:n,offsetY:p,rotation:l,size:s,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:_};m=[...m,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const M of O)if(M){const s=M.symbol;if(!s)continue;const l=M.primitiveName;l&&i.push(l);let n,p=c;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&g){let t=0,r=0;const i=M.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(g.xmin+g.xmax),r+=i.y-.5*(g.ymin+g.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):g&&(t-=(g.xmax-g.xmin)*o.x,r-=(g.ymax-g.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:_};n=[...m,s]}const O=M.geometry,[C,k]=y(O,g);switch(0===C&&0===k||(p=d(p,C,k)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":f||oe(s)?(p={...p,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:h([0,0]),rotation:h(0),scale:h(S),parent:c.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,M,i,o,a,n??m,p,S,u,v)):this._analyzeMultiLayerGraphic(e,t,r,M,i,o,a,n??m,p,S,u,v);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,M,i,o,a,n??m,u)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,p,m,c){const f=i.symbol,y=f.symbolLayers;if(y){if(!ie(y)||u(n))return le(y)?(v(f,e=>{e.colorLocked&&(m=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,p,m,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,m,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,p,m,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,m,c,f){const y=i.symbol,d=y.symbolLayers;if(!d)return;const h=B.applyEffects(y.effects,i.geometry);if(!h)return;let u=d.length;for(;u--;){const y=d[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=B.applyEffects(y.effects,h),d=k(o);if(!d)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:g,anchorX:_,anchorY:M,widthRatio:C,sdfPaddingRatio:P,sdfTextureSize:z}=x(d,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),I="CIMSolidFill"===y.type,L={type:"sdf",geometry:o,sdfPaddingRatio:P,asFill:I,sdfTextureSize:z},{path:V}=y,N=I?E(w(y)):null==V?E(F(y)):[0,0,0,0],T=I?[0,0,0,0]:E(F(y));if(!I&&!O)break;const G=i.primitiveName;let A=null;I&&!y.colorLocked&&(A=this._maybeGetValueOrOverrideExpression(G,"FillColor"));let X=null;I||y.colorLocked||(X=this._maybeGetValueOrOverrideExpression(G,"StrokeColor"));const j=A??this._getValueOrOverrideExpression(y.type,v,"Color",N),Y=X??this._getValueOrOverrideExpression(y.type,v,"Color",T),W=this._maybeGetValueOrOverrideExpression(G,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=V?{type:"sprite-rasterization-param",resource:{type:"path",path:V,asFill:I},overrides:[]}:{type:"sprite-rasterization-param",resource:L,overrides:[]},U=p(this._poMap,y,n),H=R(e.size,S.CIMVectorMarker.size),J=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",H);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:_,y:M},isAbsoluteAnchorPoint:u,size:m,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:m,widthRatio:C,rotateClockwise:!1,referenceSize:s,sizeRatio:g,color:j,outlineColor:Y,outlineWidth:W,isOutline:f,markerPlacement:r,animationParams:me(U),isStroke:"CIMSolidFill"!==y.type,baseSize:J,...b(o,z,P)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){Q().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,n,c,f)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const p=[];M.findApplicableOverrides(i,this._primitiveOverrides,p);const m=i.geometry;if(!("x"in m)||!("y"in m))return;const c=i.symbol,f=X(c),y=j(c.fontStyleName),d=t(c.fontFamilyName);c.font={family:d,decoration:f,...y};const h=R(c.height,S.CIMTextSymbol.height),u=R(c.angle),v=R(c.offsetX),O=R(c.offsetY),{haloSymbol:g}=c,_=R(c.haloSize,0);let k=[0,0,0,0];if(g?.symbolLayers?.length){const e=g.symbolLayers;for(const t of e)if(t.color){k=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",E(t.color));break}}const x=i.primitiveName;let b=[0,0,0,1],P=[0,0,0,0],z=0,I=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)P=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",E(t.color)),z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",Y(t)??0);else if("CIMSolidFill"===t.type){const r=E(t.color);I=I??!!t.colorLocked,b=this._getValueOrOverrideExpression("CIMSolidFill",e??x,"Color",r)}}let L=null,V=null,N=null,T=null,G=null;x&&(L=this._maybeGetValueOrOverrideExpression(x,"TextSize"),V=this._maybeGetValueOrOverrideExpression(x,"TextAngle"),N=this._maybeGetValueOrOverrideExpression(x,"TextOffsetX"),T=this._maybeGetValueOrOverrideExpression(x,"TextOffsetY"),I||(G=this._maybeGetValueOrOverrideExpression(x,"FillColor")));const A=G??b;let w=null,F=null,U=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?w=E(e.color):"CIMSolidStroke"===e.type&&(F=E(e.color),U=R(e.width,S.CIMSolidStroke.width))}}const H=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==H)return;const{fontStyleName:J}=c,B=d+(J?"-"+J.toLowerCase():"-regular"),q=this._getMaterialOverrides(o,c.type);q.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(q,i);const K={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName,supportsRichText:C(i.textString??"")||q.some(e=>"textString"===e.propertyName)},overrides:q};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:K,colorLocked:!!n||!!I,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:B,decoration:f,haloSize:_,haloColor:k,weight:y.weight,style:y.style,size:L??h,angle:V??u,offsetX:N??v,offsetY:T??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:D(c.horizontalAlignment),verticalAlignment:W(c.verticalAlignment),text:H,color:A,outlineColor:P,outlineSize:z,backgroundColor:w,borderLineColor:F,borderLineWidth:U,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=U(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,p,m,c,f){const y=ee(e,i),d=e.primitiveName,h=this._analyzeMaterialOverrides(d,["Rotation","OffsetX","OffsetY"]),u=T(h),[v,g,_]=O.getTextureAnchor(y,this._resourceManager,q),M=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==d||!["rotation","offsetX","offsetY"].includes(e.propertyName));M.push(...u);const C={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},k=R(e.size,S.CIMVectorMarker.size),x=this._getValueOrOverrideExpression(e.type,d,"Size",k);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:C,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:v,y:g},isAbsoluteAnchorPoint:!1,size:m,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:m,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:_/o(e.size),isOutline:f,markerPlacement:r,animationParams:me(p),baseSize:x})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return M.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:pe(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return M.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:pe(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,p,m){const c=i.geometry,f=o[0],y=o[1],d=k(c);if(!d)return;const h="Relative"!==e.anchorPointUnits,u=R(f.width,S.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:g,widthRatio:_,sdfPaddingRatio:M,sdfTextureSize:C}=x(d,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:b}=y,P=y.primitiveName,z=f.primitiveName,I=i.primitiveName;let L=null;y.colorLocked||p||(L=this._maybeGetValueOrOverrideExpression(I,"FillColor"));const V=L??this._getValueOrOverrideExpression(y.type,P,"Color",E(y.color));let N=null;f.colorLocked||p||(N=this._maybeGetValueOrOverrideExpression(I,"StrokeColor"));const T=N??this._getValueOrOverrideExpression(f.type,z,"Color",E(f.color)),G=this._maybeGetValueOrOverrideExpression(I,"StrokeWidth")??this._getValueOrOverrideExpression(f.type,z,"Width",u),A={type:"sprite-rasterization-param",resource:b?{type:"path",path:b,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:C,sdfPaddingRatio:M,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:A,colorLocked:p,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:g},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:_,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:V,outlineColor:T,outlineWidth:G,isOutline:m,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!H(i)&&(i=G(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=T(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=G(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function ee(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function te(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function re(e,t){if(!t||0===t.length)return e;const i=r(e);return M.applyOverrides(i,t),i}const ie=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function oe(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ae(e){return se(e)}function se(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectRadial"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type||"PrivateDimensionEffect"===e.type||"PrivateMatcherGeometryOverrideEffect"===e.type}function le(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function ne(e,t){if((t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)||t?.some(e=>"CIMGeometricEffectCircularSector"===e.type))&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function pe(e){return r(e).map(e=>({...e,propertyName:J(e.propertyName)}))}function me(e){return u(e)?{type:"animation-params",params:e}:null}export{$ as CIMAnalyzer,re as analyzeCIMResource};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{ringsCentroidCursor as e}from"../../../geometry/support/centroid.js";import{defaultCIMValues as i}from"../defaultCIMValues.js";class n{static{this.instance=null}static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,e,i){return new r(t,e,i)}}class r{constructor(t,e,n){const r=n.geomUnitsPerPoint;this._inputGeometries=t,this._length=(void 0!==e.length?e.length:i.CIMGeometricEffectRadial.length)*r,this._angle=void 0!==e.angle?e.angle*Math.PI/180:i.CIMGeometricEffectRadial.angle,this._lx=Math.cos(this._angle)*this._length,this._ly=Math.sin(this._angle)*this._length}next(){let i=this._inputGeometries.next();for(;i;){if("esriGeometryPoint"===i.geometryType||"esriGeometryMultipoint"===i.geometryType){const e=t.createEmptyOptimizedCIM("esriGeometryPolyline");return i.nextPath()&&i.nextPoint()&&e.pushPath([[i.x,i.y],[i.x+this._lx,i.y+this._ly]]),e}if("esriGeometryPolygon"===i.geometryType){const n=e(i);if(!n)return null;const r=t.createEmptyOptimizedCIM("esriGeometryPolyline");return r.pushPath([[n[0],n[1]],[n[0]+this._lx,n[1]+this._ly]]),r}i=this._inputGeometries.next()}return null}}export{n as EffectRadial};
2
+ import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{ringsCentroidCursor as e}from"../../../geometry/support/centroid.js";import{defaultCIMValues as i}from"../defaultCIMValues.js";class n{static{this.instance=null}static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,e,i){return new s(t,e,i)}}class s{constructor(t,e,n){const s=n.geomUnitsPerPoint;this._inputGeometries=t,this._executionContext=n,this._length=(void 0!==e.length?e.length:i.CIMGeometricEffectRadial.length)*s,this._angle=void 0!==e.angle?e.angle*Math.PI/180:i.CIMGeometricEffectRadial.angle,this._lx=Math.cos(this._angle)*this._length,this._ly=Math.sin(this._angle)*this._length}next(){let i=this._inputGeometries.next();for(;i;){if("esriGeometryPoint"===i.geometryType||"esriGeometryMultipoint"===i.geometryType){const e=t.createEmptyOptimizedCIM("esriGeometryPolyline");return i.nextPath()&&i.nextPoint()&&(this._executionContext.effectOrigin=[i.x,i.y],e.pushPath([[i.x,i.y],[i.x+this._lx,i.y+this._ly]])),e}if("esriGeometryPolygon"===i.geometryType){const n=e(i);if(!n)return null;const s=t.createEmptyOptimizedCIM("esriGeometryPolyline");return this._executionContext.effectOrigin=[n[0],n[1]],s.pushPath([[n[0],n[1]],[n[0]+this._lx,n[1]+this._ly]]),s}i=this._inputGeometries.next()}return null}}export{n as EffectRadial};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile).push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=e.key.level<t.level?0:1<<Math.abs(e.key.level-t.level),u=this._indexMapByTile.get(e),h=u?.get(r);if(h)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),u=-a,c=this.tileCoordRange+a;if(!(r>=u&&r<c&&n>=u&&n<c)){l.push(o);continue}const m=h.getCandidate(r,n,o.hash,y),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
2
+ import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile)?.push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=e.key.level<t.level?0:1<<Math.abs(e.key.level-t.level),u=this._indexMapByTile.get(e),h=u?.get(r);if(h)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),u=-a,c=this.tileCoordRange+a;if(!(r>=u&&r<c&&n>=u&&n<c)){l.push(o);continue}const m=h.getCandidate(r,n,o.hash,y),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- function t(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function e(t,e){return Math.sqrt(t*t+e*e)}function n(t){const n=e(t[0],t[1]);t[0]/=n,t[1]/=n}function s(t,n){return e(t[0]-n[0],t[1]-n[1])}function i(t,e){return t[e+1]}function r(t){return t.length-1}function h(t){let e=0;for(let n=0;n<r(t);n++)e+=a(t,n);return e}function a(t,e,n=1){let[s,r]=i(t,e);return[s,r]=[Math.round(s),Math.round(r)],Math.sqrt(s*s+r*r)*n}class d{constructor(t,e,n,s,i){this._segments=t,this._index=e,this._distance=n,this._xStart=s,this._yStart=i,this._done=!1}static create(t){return new d(t,0,0,t[0][0],t[0][1])}clone(){return new d(this._segments,this._index,this._distance,this.xStart,this.yStart)}equals(t){return this._index===t._index||t._index===this._index-1&&(0===this._distance||1===t._distance)||t._index===this._index+1&&(1===this._distance||0===t._distance)}leq(t){return this._index<t._index||this._index===t._index&&this._distance<=t._distance}geq(t){return this._index>t._index||this._index===t._index&&this._distance>=t._distance}get _segment(){return this._segments[this._index+1]}get angle(){const t=this.dy,e=(0*t+-1*-this.dx)/(1*this.length);let n=Math.acos(e);return t>0&&(n=2*Math.PI-n),n}get xStart(){return this._xStart}get yStart(){return this._yStart}get x(){return this.xStart+this.distance*this.dx}get y(){return this.yStart+this.distance*this.dy}get dx(){return this._segment[0]}get dy(){return this._segment[1]}get xMidpoint(){return this.xStart+.5*this.dx}get yMidpoint(){return this.yStart+.5*this.dy}get xEnd(){return this.xStart+this.dx}get yEnd(){return this.yStart+this.dy}get length(){const{dx:t,dy:e}=this;return Math.sqrt(t*t+e*e)}get remainingLength(){return this.length*(1-this._distance)}get backwardLength(){return this.length*this._distance}get distance(){return this._distance}get done(){return this._done}hasPrev(){return this._index-1>=0}hasNext(){return this._index+1<r(this._segments)}next(){return this.hasNext()?(this._xStart+=this.dx,this._yStart+=this.dy,this._distance=0,this._index+=1,this):null}prev(){return this.hasPrev()?(this._index-=1,this._xStart-=this.dx,this._yStart-=this.dy,this._distance=1,this):(this._done=!0,null)}_seekBackwards(t,e){const n=this.backwardLength;if(t<=n)return this._distance=(n-t)/this.length,this;let s=this.backwardLength;for(;this.prev();){if(s+this.length>t)return this._seekBackwards(t-s);s+=this.length}return this._distance=0,e?this:null}seek(t,e=!1){if(t<0)return this._seekBackwards(Math.abs(t),e);if(t<=this.remainingLength)return this._distance=(this.backwardLength+t)/this.length,this;let n=this.remainingLength;for(;this.next();){if(n+this.length>t)return this.seek(t-n,e);n+=this.length}return this._distance=1,e?this:null}}function u(t,e,n,s=!0){const i=h(t),r=d.create(t),a=i/2;if(!s)return r.seek(a),void n(r.clone(),0,a+0*e,i);const u=Math.max((i-e)/2,0),c=Math.floor(u/e),_=a-c*e;r.seek(_);for(let h=-c;h<=c;h++)n(r.clone(),h,a+h*e,i),r.seek(e)}function c(t,e){const n=e;for(let s=0;s<t.length;s++){let e=t[s];_(e,n);const i=[];i.push(e[0]);for(let t=1;t<e.length;t++){const[n,s]=e[t-1],[r,h]=e[t],a=r-n,d=h-s;i.push([a,d])}t[s]=i,e=i}return t}function _(e,i){const r=1e-6;if(i<=0)return;const h=e.length;if(h<3)return;const a=[];let d=0;a.push(0);for(let t=1;t<h;t++)d+=s(e[t],e[t-1]),a.push(d);i=Math.min(i,.2*d);const u=[];u.push(e[0][0]),u.push(e[0][1]);const c=e[h-1][0],_=e[h-1][1],o=t([0,0],e[0],e[1]);n(o),e[0][0]+=i*o[0],e[0][1]+=i*o[1],t(o,e[h-1],e[h-2]),n(o),e[h-1][0]+=i*o[0],e[h-1][1]+=i*o[1];for(let t=1;t<h;t++)a[t]+=i;a[h-1]+=i;const g=.5*i;for(let t=1;t<h-1;t++){let n=0,s=0,d=0;for(let h=t-1;h>=0&&!(a[h+1]<a[t]-g);h--){const u=g+a[h+1]-a[t],c=a[h+1]-a[h],_=a[t]-a[h]<g?1:u/c;if(Math.abs(_)<r)break;const o=_*_,l=_*u-.5*o*c,x=_*c/i,f=e[h+1],y=e[h][0]-f[0],S=e[h][1]-f[1];n+=x/l*(f[0]*_*u+.5*o*(u*y-c*f[0])-o*_*c*y/3),s+=x/l*(f[1]*_*u+.5*o*(u*S-c*f[1])-o*_*c*S/3),d+=x}for(let u=t+1;u<h&&!(a[u-1]>a[t]+g);u++){const h=g-a[u-1]+a[t],c=a[u]-a[u-1],_=a[u]-a[t]<g?1:h/c;if(Math.abs(_)<r)break;const o=_*_,l=_*h-.5*o*c,x=_*c/i,f=e[u-1],y=e[u][0]-f[0],S=e[u][1]-f[1];n+=x/l*(f[0]*_*h+.5*o*(h*y-c*f[0])-o*_*c*y/3),s+=x/l*(f[1]*_*h+.5*o*(h*S-c*f[1])-o*_*c*S/3),d+=x}u.push(n/d),u.push(s/d)}u.push(c),u.push(_);for(let t=0,n=0;t<h;t++)e[t][0]=u[n++],e[t][1]=u[n++]}export{d as SegmentCursor,u as pathDivide,h as pathLength,i as segmentAt,r as segmentCount,a as segmentLength,c as smoothPaths};
2
+ function t(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function e(t,e){return Math.sqrt(t*t+e*e)}function n(t){const n=e(t[0],t[1]);t[0]/=n,t[1]/=n}function s(t,n){return e(t[0]-n[0],t[1]-n[1])}function i(t,e){return t[e+1]}function r(t){return t.length-1}function h(t){let e=0;for(let n=0;n<r(t);n++)e+=a(t,n);return e}function a(t,e,n=1){let[s,r]=i(t,e);return[s,r]=[Math.round(s),Math.round(r)],Math.sqrt(s*s+r*r)*n}class d{constructor(t,e,n,s,i){this._segments=t,this._index=e,this._distance=n,this._xStart=s,this._yStart=i,this._done=!1}static create(t){return new d(t,0,0,t[0][0],t[0][1])}clone(){return new d(this._segments,this._index,this._distance,this.xStart,this.yStart)}equals(t){return this._index===t._index||t._index===this._index-1&&(0===this._distance||1===t._distance)||t._index===this._index+1&&(1===this._distance||0===t._distance)}leq(t){return this._index<t._index||this._index===t._index&&this._distance<=t._distance}geq(t){return this._index>t._index||this._index===t._index&&this._distance>=t._distance}get _segment(){return this._segments[this._index+1]}get angle(){const t=this.dy,e=(0*t+-1*-this.dx)/(1*this.length);let n=Math.acos(e);return t>0&&(n=2*Math.PI-n),n}get xStart(){return this._xStart}get yStart(){return this._yStart}get x(){return this.xStart+this.distance*this.dx}get y(){return this.yStart+this.distance*this.dy}get dx(){return this._segment[0]}get dy(){return this._segment[1]}get xMidpoint(){return this.xStart+.5*this.dx}get yMidpoint(){return this.yStart+.5*this.dy}get xEnd(){return this.xStart+this.dx}get yEnd(){return this.yStart+this.dy}get length(){const{dx:t,dy:e}=this;return Math.sqrt(t*t+e*e)}get remainingLength(){return this.length*(1-this._distance)}get backwardLength(){return this.length*this._distance}get distance(){return this._distance}get done(){return this._done}hasPrev(){return this._index-1>=0}hasNext(){return this._index+1<r(this._segments)}next(){return this.hasNext()?(this._xStart+=this.dx,this._yStart+=this.dy,this._distance=0,this._index+=1,this):null}prev(){return this.hasPrev()?(this._index-=1,this._xStart-=this.dx,this._yStart-=this.dy,this._distance=1,this):(this._done=!0,null)}_seekBackwards(t,e){const n=this.backwardLength;if(t<=n)return this._distance=(n-t)/this.length,this;let s=this.backwardLength;for(;this.prev();){if(s+this.length>t)return this._seekBackwards(t-s);s+=this.length}return this._distance=0,e?this:null}seek(t,e=!1){if(t<0)return this._seekBackwards(Math.abs(t),e);if(t<=this.remainingLength)return this._distance=(this.backwardLength+t)/this.length,this;let n=this.remainingLength;for(;this.next();){if(n+this.length>t)return this.seek(t-n,e);n+=this.length}return this._distance=1,e?this:null}}function u(t,e,n,s=!0){const i=h(t);if(0===i)return;const r=d.create(t),a=i/2;if(!s)return r.seek(a),void n(r.clone(),0,a+0*e,i);const u=Math.max((i-e)/2,0),c=Math.floor(u/e),o=a-c*e;r.seek(o);for(let h=-c;h<=c;h++)n(r.clone(),h,a+h*e,i),r.seek(e)}function c(t,e){const n=e;for(let s=0;s<t.length;s++){let e=t[s];o(e,n);const i=[];i.push(e[0]);for(let t=1;t<e.length;t++){const[n,s]=e[t-1],[r,h]=e[t],a=r-n,d=h-s;i.push([a,d])}t[s]=i,e=i}return t}function o(e,i){const r=1e-6;if(i<=0)return;const h=e.length;if(h<3)return;const a=[];let d=0;a.push(0);for(let t=1;t<h;t++)d+=s(e[t],e[t-1]),a.push(d);i=Math.min(i,.2*d);const u=[];u.push(e[0][0]),u.push(e[0][1]);const c=e[h-1][0],o=e[h-1][1],_=t([0,0],e[0],e[1]);n(_),e[0][0]+=i*_[0],e[0][1]+=i*_[1],t(_,e[h-1],e[h-2]),n(_),e[h-1][0]+=i*_[0],e[h-1][1]+=i*_[1];for(let t=1;t<h;t++)a[t]+=i;a[h-1]+=i;const g=.5*i;for(let t=1;t<h-1;t++){let n=0,s=0,d=0;for(let h=t-1;h>=0&&!(a[h+1]<a[t]-g);h--){const u=g+a[h+1]-a[t],c=a[h+1]-a[h],o=a[t]-a[h]<g?1:u/c;if(Math.abs(o)<r)break;const _=o*o,l=o*u-.5*_*c,x=o*c/i,f=e[h+1],y=e[h][0]-f[0],S=e[h][1]-f[1];n+=x/l*(f[0]*o*u+.5*_*(u*y-c*f[0])-_*o*c*y/3),s+=x/l*(f[1]*o*u+.5*_*(u*S-c*f[1])-_*o*c*S/3),d+=x}for(let u=t+1;u<h&&!(a[u-1]>a[t]+g);u++){const h=g-a[u-1]+a[t],c=a[u]-a[u-1],o=a[u]-a[t]<g?1:h/c;if(Math.abs(o)<r)break;const _=o*o,l=o*h-.5*_*c,x=o*c/i,f=e[u-1],y=e[u][0]-f[0],S=e[u][1]-f[1];n+=x/l*(f[0]*o*h+.5*_*(h*y-c*f[0])-_*o*c*y/3),s+=x/l*(f[1]*o*h+.5*_*(h*S-c*f[1])-_*o*c*S/3),d+=x}u.push(n/d),u.push(s/d)}u.push(c),u.push(o);for(let t=0,n=0;t<h;t++)e[t][0]=u[n++],e[t][1]=u[n++]}export{d as SegmentCursor,u as pathDivide,h as pathLength,i as segmentAt,r as segmentCount,a as segmentLength,c as smoothPaths};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{AFillMeshWriter as t}from"./AFillMeshWriter.js";import{processColorInput as e,getMinMaxZoom as o}from"./meshWriterUtils.js";import{DataType as r}from"../../../../../../webgl/enums.js";const a={createComputedParams:t=>t,optionalAttributes:{zoomRange:{type:r.HALF_FLOAT,count:2,pack:({scaleInfo:t},{tileInfo:e})=>o(t,e)}},attributes:{id:{type:r.UNSIGNED_BYTE,count:3,pack:"id"},bitset:{type:r.UNSIGNED_BYTE,count:1},pos:{type:r.SHORT,count:2,pack:"position",packPrecisionFactor:10},color:{type:r.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:t})=>e(t)}}};class i extends t{constructor(){super(...arguments),this.vertexSpec=a}get _effectRotation(){const{effectRotation:t,effectRotationType:e,viewRotation:o}=this.evaluatedMeshParams;return null==t&&null==o?null:{value:t,type:e,viewRotation:o}}createTesselationParams(t){return null}}export{i as FillMeshWriter,a as fillVertexSpec};
2
+ import{AFillMeshWriter as t}from"./AFillMeshWriter.js";import{processColorInput as e,getMinMaxZoom as o}from"./meshWriterUtils.js";import{DataType as i}from"../../../../../../webgl/enums.js";const r={createComputedParams:t=>t,optionalAttributes:{zoomRange:{type:i.HALF_FLOAT,count:2,pack:({scaleInfo:t},{tileInfo:e})=>o(t,e)}},attributes:{id:{type:i.UNSIGNED_BYTE,count:3,pack:"id"},bitset:{type:i.UNSIGNED_BYTE,count:1},pos:{type:i.SHORT,count:2,pack:"position",packPrecisionFactor:10},color:{type:i.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:t})=>e(t)}}};class n extends t{constructor(){super(...arguments),this.vertexSpec=r}get _effectRotation(){const{effectRotation:t,effectRotationType:e,useEffectOrigin:o,viewRotation:i}=this.evaluatedMeshParams;return null==t&&null==i?null:{value:t,type:e,useEffectOrigin:!!o,viewRotation:i}}createTesselationParams(t){return null}}export{n as FillMeshWriter,r as fillVertexSpec};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{CIMSymbolUnits as t}from"../../../../../../../symbols/cim/types.js";import{spritePadding as e,gradientTextureExternalPadding as r}from"../../../definitions.js";import{AFillMeshWriter as i}from"./AFillMeshWriter.js";import{fillVertexSpec as s}from"./FillMeshWriter.js";import{gradientFillMethods as a,bitset as o}from"./gradientFillConstants.js";import{getGradientSizeHelper as n}from"./GradientSizeHelper.js";import{getBitMask as l}from"./meshWriterUtils.js";import{DataType as c}from"../../../../../../webgl/enums.js";const p={createComputedParams:t=>t,optionalAttributes:s.optionalAttributes,attributes:{...s.attributes,bitset:{type:c.UNSIGNED_BYTE,count:1,pack:({gradientSizeUnits:e,gradientType:r})=>{let i=0;return e===t.Absolute&&(i|=l(o.isAbsolute)),"discrete"===r.toLowerCase()&&(i|=l(o.isDiscrete)),i}},tlbr:{count:4,type:c.UNSIGNED_SHORT,pack:({sprite:t})=>{const{rect:i,width:s,height:a}=t,o=i.x+e+r,n=i.y+e;return[o,n,o+s-2*r,n+a]}},relativePosition:{count:2,type:c.HALF_FLOAT,packTessellation:({gradientStats:t},e,r,i)=>t?.getRelativePosition(r,i)??[0,0]},relativeGradientSize:{count:2,type:c.HALF_FLOAT,packTessellation:({gradientStats:t})=>t?.relativeSize??[1,1]},gradientMethod:{count:1,type:c.UNSIGNED_BYTE,pack:({gradientMethod:t})=>{switch(t.toLowerCase()){case"rectangular":return a.rectangular;case"circular":return a.circular;default:return a.linear}}}}};class u extends i{constructor(){super(...arguments),this.vertexSpec=p}get _effectRotation(){const{effectRotation:t,effectRotationType:e,viewRotation:r}=this.evaluatedMeshParams;return null==t&&null==r?null:{value:t,type:e,viewRotation:r}}get _preventEffectClipping(){return!0}createTesselationParams(t){return{gradientStats:n(this._unclippedGeometry,this.evaluatedMeshParams)}}_write(t,{target:e,effectGeometry:r}){const i=r?.asOptimized()??e.readGeometryForDisplay();this._unclippedGeometry=i;const s=this._clip(i);if(!s)return void(this._unclippedGeometry=null);const a=this.evaluatedMeshParams.sprite?.textureBinding;t.recordStart(this.instanceId,this.attributeLayout,a),this._writeGeometry(t,e,s),this._unclippedGeometry=null,t.recordEnd()}}export{u as GradientFillMeshWriter,p as gradientFillVertexSpec};
2
+ import{CIMSymbolUnits as t}from"../../../../../../../symbols/cim/types.js";import{spritePadding as e,gradientTextureExternalPadding as r}from"../../../definitions.js";import{AFillMeshWriter as i}from"./AFillMeshWriter.js";import{fillVertexSpec as s}from"./FillMeshWriter.js";import{gradientFillMethods as a,bitset as o}from"./gradientFillConstants.js";import{getGradientSizeHelper as n}from"./GradientSizeHelper.js";import{getBitMask as l}from"./meshWriterUtils.js";import{DataType as c}from"../../../../../../webgl/enums.js";const u={createComputedParams:t=>t,optionalAttributes:s.optionalAttributes,attributes:{...s.attributes,bitset:{type:c.UNSIGNED_BYTE,count:1,pack:({gradientSizeUnits:e,gradientType:r})=>{let i=0;return e===t.Absolute&&(i|=l(o.isAbsolute)),"discrete"===r.toLowerCase()&&(i|=l(o.isDiscrete)),i}},tlbr:{count:4,type:c.UNSIGNED_SHORT,pack:({sprite:t})=>{const{rect:i,width:s,height:a}=t,o=i.x+e+r,n=i.y+e;return[o,n,o+s-2*r,n+a]}},relativePosition:{count:2,type:c.HALF_FLOAT,packTessellation:({gradientStats:t},e,r,i)=>t?.getRelativePosition(r,i)??[0,0]},relativeGradientSize:{count:2,type:c.HALF_FLOAT,packTessellation:({gradientStats:t})=>t?.relativeSize??[1,1]},gradientMethod:{count:1,type:c.UNSIGNED_BYTE,pack:({gradientMethod:t})=>{switch(t.toLowerCase()){case"rectangular":return a.rectangular;case"circular":return a.circular;default:return a.linear}}}}};class p extends i{constructor(){super(...arguments),this.vertexSpec=u}get _effectRotation(){const{effectRotation:t,effectRotationType:e,useEffectOrigin:r,viewRotation:i}=this.evaluatedMeshParams;return null==t&&null==i?null:{value:t,type:e,useEffectOrigin:!!r,viewRotation:i}}get _preventEffectClipping(){return!0}createTesselationParams(t){return{gradientStats:n(this._unclippedGeometry,this.evaluatedMeshParams)}}_write(t,{target:e,effectGeometry:r}){const i=r?.asOptimized()??e.readGeometryForDisplay();this._unclippedGeometry=i;const s=this._clip(i);if(!s)return void(this._unclippedGeometry=null);const a=this.evaluatedMeshParams.sprite?.textureBinding;t.recordStart(this.instanceId,this.attributeLayout,a),this._writeGeometry(t,e,s),this._unclippedGeometry=null,t.recordEnd()}}export{p as GradientFillMeshWriter,u as gradientFillVertexSpec};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{pt2px as t}from"../../../../../../../core/screenUtils.js";import{GeometryCursor as e}from"../../../../../../../geometry/GeometryCursor.js";import{thinLineHalfWidthThreshold as s}from"../../../definitions.js";import{LineTessellation as i}from"../../../TurboLine.js";import{clipLinesMarshall as r}from"../../../mesh/templates/templateUtils.js";import{processLineCapInput as o,processLineJoinInput as n,packRounded as a,processColorInput as c,getMinMaxZoom as h}from"../fill/meshWriterUtils.js";import{MeshWriter as l}from"../mesh/MeshWriter.js";import{getLineClippingMargin as m}from"../mesh/utils.js";import{DataType as u}from"../../../../../../webgl/enums.js";class f{constructor(){this.extrusionOffsetX=0,this.extrusionOffsetY=0,this.normalX=0,this.normalY=0,this.directionX=0,this.directionY=0,this.distance=0,this.pathLength=0,this.distanceOffset=0,this.lineLength=0}}const p={createComputedParams:t=>t,optionalAttributes:{zoomRange:{type:u.HALF_FLOAT,count:2,pack:({scaleInfo:t},{tileInfo:e})=>h(t,e)}},attributes:{id:{type:u.UNSIGNED_BYTE,count:3,pack:"id"},pos:{type:u.SHORT,count:2,pack:"position",packPrecisionFactor:10},bitset:{type:u.UNSIGNED_BYTE,count:1},color:{type:u.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:t})=>c(t)},offset:{type:u.BYTE,count:2,packPrecisionFactor:16,packTessellation:({extrusionOffsetX:t,extrusionOffsetY:e})=>[a(t,16),a(e,16)]},normal:{type:u.BYTE,count:2,packPrecisionFactor:16,packTessellation:({normalX:t,normalY:e})=>[a(t,16),a(e,16)]},halfWidth:{type:u.HALF_FLOAT,count:1,pack:({width:e})=>t(.5*e)},referenceHalfWidth:{type:u.HALF_FLOAT,count:1,pack:({referenceWidth:e})=>t(.5*e)}}};class d{constructor(){this.id=0,this.bitset=0,this.indexCount=0,this.vertexCount=0,this.vertexFrom=0,this.vertexBounds=0,this.pathLength=0,this.distanceOffset=0}}const _=65535;class x extends l{get _effectRotation(){const{effectRotation:t,effectRotationType:e,viewRotation:s}=this.evaluatedMeshParams;return null==t&&null==s?null:{value:t,type:e,viewRotation:s}}constructor(t,e,s,i){super(t,e,s,i),this.vertexSpec=p,this._currentWrite=new d,this._tessellationOptions={halfWidth:0,pixelCoordRatio:1,offset:0,wrapDistance:_,textured:!1},this._tessParams=new f,this._initializeTessellator()}writeLineVertices(t,e,s){const i=this._getLines(e);null!=i&&this._writeVertices(t,s,i)}_initializeTessellator(){this._lineTessellator=new i(this._writeTesselatedVertex.bind(this),this._writeTriangle.bind(this),!0)}_write(t,{target:s,effectGeometry:i}){const r=i??e.fromFeatureSetReaderCIM(s);r&&this._writeGeometry(t,s,r)}_writeGeometry(t,e,s,i){t.recordStart(this.instanceId,this.attributeLayout,i),this.writeLineVertices(t,s,e),t.recordEnd()}_getLines(t){return r(t,m(this.evaluatedMeshParams))}_writeVertices(e,i,r){const{_currentWrite:a,_tessellationOptions:c,evaluatedMeshParams:h}=this,{width:l,capType:m,joinType:u,miterLimit:f,hasSizeVV:p}=h,d=t(.5*l);c.halfWidth=d,c.capType=o(m),c.joinType=n(u),c.miterLimit=f;const x=!p;a.out=e,a.id=i.getDisplayId(),a.vertexCount=0,a.indexCount=0,a.vertexFrom=e.vertexCount(),a.vertexBounds=x&&d<s?0:1;for(const{line:t,start:s,pathLength:o}of r)c.initialDistance=s%_,a.pathLength=o,a.distanceOffset=Math.floor(s/_)*_,this._lineTessellator.tessellate(t,c,x)}_writeTesselatedVertex(t,e,s,i,r,o,n,a,c,h,l){const{out:m,id:u,vertexBounds:f,pathLength:p,distanceOffset:d}=this._currentWrite;return this.hasEffects&&m.recordBounds(t,e,f,f),this._tessParams.extrusionOffsetX=n,this._tessParams.extrusionOffsetY=a,this._tessParams.normalX=c,this._tessParams.normalY=h,this._tessParams.directionX=r,this._tessParams.directionY=o,this._tessParams.distance=l,this._tessParams.pathLength=p,this._tessParams.distanceOffset=d,this._writeVertex(m,u,t,e,this._tessParams),this._currentWrite.vertexFrom+this._currentWrite.vertexCount++}_writeTriangle(t,e,s){const{out:i}=this._currentWrite;i.indexEnsureSize(3),i.indexWrite(t),i.indexWrite(e),i.indexWrite(s),this._currentWrite.indexCount+=3}}export{x as LineMeshWriter,f as LineTessellationParams,p as LineVertexSpec};
2
+ import{pt2px as t}from"../../../../../../../core/screenUtils.js";import{GeometryCursor as e}from"../../../../../../../geometry/GeometryCursor.js";import{thinLineHalfWidthThreshold as s}from"../../../definitions.js";import{LineTessellation as i}from"../../../TurboLine.js";import{clipLinesMarshall as r}from"../../../mesh/templates/templateUtils.js";import{processLineCapInput as o,processLineJoinInput as n,packRounded as a,processColorInput as c,getMinMaxZoom as h}from"../fill/meshWriterUtils.js";import{MeshWriter as l}from"../mesh/MeshWriter.js";import{getLineClippingMargin as u}from"../mesh/utils.js";import{DataType as f}from"../../../../../../webgl/enums.js";class m{constructor(){this.extrusionOffsetX=0,this.extrusionOffsetY=0,this.normalX=0,this.normalY=0,this.directionX=0,this.directionY=0,this.distance=0,this.pathLength=0,this.distanceOffset=0,this.lineLength=0}}const p={createComputedParams:t=>t,optionalAttributes:{zoomRange:{type:f.HALF_FLOAT,count:2,pack:({scaleInfo:t},{tileInfo:e})=>h(t,e)}},attributes:{id:{type:f.UNSIGNED_BYTE,count:3,pack:"id"},pos:{type:f.SHORT,count:2,pack:"position",packPrecisionFactor:10},bitset:{type:f.UNSIGNED_BYTE,count:1},color:{type:f.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:t})=>c(t)},offset:{type:f.BYTE,count:2,packPrecisionFactor:16,packTessellation:({extrusionOffsetX:t,extrusionOffsetY:e})=>[a(t,16),a(e,16)]},normal:{type:f.BYTE,count:2,packPrecisionFactor:16,packTessellation:({normalX:t,normalY:e})=>[a(t,16),a(e,16)]},halfWidth:{type:f.HALF_FLOAT,count:1,pack:({width:e})=>t(.5*e)},referenceHalfWidth:{type:f.HALF_FLOAT,count:1,pack:({referenceWidth:e})=>t(.5*e)}}};class d{constructor(){this.id=0,this.bitset=0,this.indexCount=0,this.vertexCount=0,this.vertexFrom=0,this.vertexBounds=0,this.pathLength=0,this.distanceOffset=0}}const _=65535;class x extends l{get _effectRotation(){const{effectRotation:t,effectRotationType:e,useEffectOrigin:s,viewRotation:i}=this.evaluatedMeshParams;return null==t&&null==i?null:{value:t,type:e,useEffectOrigin:!!s,viewRotation:i}}constructor(t,e,s,i){super(t,e,s,i),this.vertexSpec=p,this._currentWrite=new d,this._tessellationOptions={halfWidth:0,pixelCoordRatio:1,offset:0,wrapDistance:_,textured:!1},this._tessParams=new m,this._initializeTessellator()}writeLineVertices(t,e,s){const i=this._getLines(e);null!=i&&this._writeVertices(t,s,i)}_initializeTessellator(){this._lineTessellator=new i(this._writeTesselatedVertex.bind(this),this._writeTriangle.bind(this),!0)}_write(t,{target:s,effectGeometry:i}){const r=i??e.fromFeatureSetReaderCIM(s);r&&this._writeGeometry(t,s,r)}_writeGeometry(t,e,s,i){t.recordStart(this.instanceId,this.attributeLayout,i),this.writeLineVertices(t,s,e),t.recordEnd()}_getLines(t){return r(t,u(this.evaluatedMeshParams))}_writeVertices(e,i,r){const{_currentWrite:a,_tessellationOptions:c,evaluatedMeshParams:h}=this,{width:l,capType:u,joinType:f,miterLimit:m,hasSizeVV:p}=h,d=t(.5*l);c.halfWidth=d,c.capType=o(u),c.joinType=n(f),c.miterLimit=m;const x=!p;a.out=e,a.id=i.getDisplayId(),a.vertexCount=0,a.indexCount=0,a.vertexFrom=e.vertexCount(),a.vertexBounds=x&&d<s?0:1;for(const{line:t,start:s,pathLength:o}of r)c.initialDistance=s%_,a.pathLength=o,a.distanceOffset=Math.floor(s/_)*_,this._lineTessellator.tessellate(t,c,x)}_writeTesselatedVertex(t,e,s,i,r,o,n,a,c,h,l){const{out:u,id:f,vertexBounds:m,pathLength:p,distanceOffset:d}=this._currentWrite;return this.hasEffects&&u.recordBounds(t,e,m,m),this._tessParams.extrusionOffsetX=n,this._tessParams.extrusionOffsetY=a,this._tessParams.normalX=c,this._tessParams.normalY=h,this._tessParams.directionX=r,this._tessParams.directionY=o,this._tessParams.distance=l,this._tessParams.pathLength=p,this._tessParams.distanceOffset=d,this._writeVertex(u,f,t,e,this._tessParams),this._currentWrite.vertexFrom+this._currentWrite.vertexCount++}_writeTriangle(t,e,s){const{out:i}=this._currentWrite;i.indexEnsureSize(3),i.indexWrite(t),i.indexWrite(e),i.indexWrite(s),this._currentWrite.indexCount+=3}}export{x as LineMeshWriter,m as LineTessellationParams,p as LineVertexSpec};