@arcgis/core 4.23.0-next.20220118 → 4.23.0-next.20220126

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 (359) hide show
  1. package/Graphic.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/00c5bb5eecb0e89266df.js +1 -0
  4. package/assets/esri/core/workers/chunks/021a37e2b191298e80b7.js +1 -0
  5. package/assets/esri/core/workers/chunks/1370c92c40fd6271553c.js +1 -0
  6. package/assets/esri/core/workers/chunks/199670a3a564ebe3bd79.js +1 -0
  7. package/assets/esri/core/workers/chunks/1e4d37c2b9dc83d20a11.js +1 -0
  8. package/assets/esri/core/workers/chunks/1fbcc8424452d0256bd6.js +1 -0
  9. package/assets/esri/core/workers/chunks/{7c9d2638693d5f798b23.js → 23b15e7c2f96d260e16c.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{b2ae5fc4f787ea568b88.js → 2460f3b6ada6ae900dec.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{99f0d896c17dd09cd285.js → 2629adf79e7fd9f25f07.js} +1 -1
  12. package/assets/esri/core/workers/chunks/2792ca40f1e92849247c.js +1 -0
  13. package/assets/esri/core/workers/chunks/2a96f1bba9ce6883e5e0.js +1 -0
  14. package/assets/esri/core/workers/chunks/2e899ef5881b4ec6fa55.js +1 -0
  15. package/assets/esri/core/workers/chunks/3231ee3e090bb4cac3fc.js +1 -0
  16. package/assets/esri/core/workers/chunks/{0c3e3a5baf54bd5e210c.js → 36e250278b5622ccf068.js} +1 -1
  17. package/assets/esri/core/workers/chunks/395ba088d4864588ff66.js +1 -0
  18. package/assets/esri/core/workers/chunks/3cc77692b2eee27b9c9e.js +1 -0
  19. package/assets/esri/core/workers/chunks/3f343f792fd9f44d6f25.js +1 -0
  20. package/assets/esri/core/workers/chunks/{8a250ec51097f16feb66.js → 40a1e713f63ec77110c0.js} +1 -1
  21. package/assets/esri/core/workers/chunks/422537fc3df707bb62c9.js +1 -0
  22. package/assets/esri/core/workers/chunks/{ba6fdaed6c315dc13981.js → 434b16731c6a81f868ef.js} +1 -1
  23. package/assets/esri/core/workers/chunks/4385a268c2a64281d1c1.js +1 -0
  24. package/assets/esri/core/workers/chunks/{44b01d42d4ec72913229.js → 438f0b5ae5c53ae4f06a.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{4d539878bfbd7c549e60.js → 46b4bb66a54bbd8e2e57.js} +1 -1
  26. package/assets/esri/core/workers/chunks/4c76146014dc15143ba3.js +1 -0
  27. package/assets/esri/core/workers/chunks/5a4a5585ec8027079f32.js +1 -0
  28. package/assets/esri/core/workers/chunks/5d991b74d958005c26c4.js +1 -0
  29. package/assets/esri/core/workers/chunks/5dfe1f8d520025e2118b.js +1 -0
  30. package/assets/esri/core/workers/chunks/601e697dc7414bda128a.js +1 -0
  31. package/assets/esri/core/workers/chunks/663ad15b86936eb06b69.js +1 -0
  32. package/assets/esri/core/workers/chunks/68a59ce98177d8513337.js +1 -0
  33. package/assets/esri/core/workers/chunks/{9cdaba126ac7fa5f33f0.js → 6cd5e4380d29b9a3c344.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{a7b1b75643ed31489495.js → 6f50a9647f026a8d4729.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{47395d225229d237f0ac.js → 7bc5cc5dbf1b7b70ddac.js} +1 -1
  36. package/assets/esri/core/workers/chunks/7d661129a0d8c466eeec.js +1 -0
  37. package/assets/esri/core/workers/chunks/{64276aacaafa4c8a15bd.js → 7dcf52d3db3903c8eb9f.js} +1 -1
  38. package/assets/esri/core/workers/chunks/8070972c0efb78523b68.js +1 -0
  39. package/assets/esri/core/workers/chunks/8fa0a14165d43ffe87a5.js +1 -0
  40. package/assets/esri/core/workers/chunks/94515fb3ef38067eeadd.js +1 -0
  41. package/assets/esri/core/workers/chunks/94b8dbf859df71858d1c.js +1 -0
  42. package/assets/esri/core/workers/chunks/97a28641b3b2fd31bea2.js +1 -0
  43. package/assets/esri/core/workers/chunks/{d1454155ee1b8a421cbb.js → 97ec9eef0048760fa260.js} +1 -1
  44. package/assets/esri/core/workers/chunks/98986e6601b0366376b4.js +1 -0
  45. package/assets/esri/core/workers/chunks/9cdcf9309d6feda70185.js +1 -0
  46. package/assets/esri/core/workers/chunks/a78757b9c7e8cbea08fa.js +1 -0
  47. package/assets/esri/core/workers/chunks/aa04b90b82bf70caaae4.js +1 -0
  48. package/assets/esri/core/workers/chunks/{b10fcbe1393c812fc219.js → aa861b8eae6c85f3dad4.js} +1 -1
  49. package/assets/esri/core/workers/chunks/aace7e1fef256bb961c9.js +1 -0
  50. package/assets/esri/core/workers/chunks/{ed0297fc61014e848c18.js → af5694b4d278cf1db2d9.js} +1 -1
  51. package/assets/esri/core/workers/chunks/afbb4f802ca5774f0326.js +1 -0
  52. package/assets/esri/core/workers/chunks/b0b036ad3ad3cd956747.js +1 -0
  53. package/assets/esri/core/workers/chunks/b2c5f92e3d7606297ca9.js +1 -0
  54. package/assets/esri/core/workers/chunks/b2d2de935487257c568b.js +1 -0
  55. package/assets/esri/core/workers/chunks/b2ebe4f6d100e15b512d.js +1 -0
  56. package/assets/esri/core/workers/chunks/b8316c6469a543029bc6.js +1 -0
  57. package/assets/esri/core/workers/chunks/{4b69129c0557852d9b3d.js → ba5eb394f098968c22d2.js} +1 -1
  58. package/assets/esri/core/workers/chunks/bf0a65b4be31959f921d.js +1 -0
  59. package/assets/esri/core/workers/chunks/bf6dda4a2af14c4b7716.js +1 -0
  60. package/assets/esri/core/workers/chunks/c890c7fca27170e3341f.js +1 -0
  61. package/assets/esri/core/workers/chunks/{573dc3064e84ca86844d.js → c959e0d1cf7dce0421b9.js} +1 -1
  62. package/assets/esri/core/workers/chunks/c976785f2391c77d8a30.js +1 -0
  63. package/assets/esri/core/workers/chunks/{1fd48459afb58a6cf14f.js → ca2f5faa01d99c21ec14.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{7aa543a97f055cddea99.js → cc146c57bbdac8029fd8.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{d39b7983b68d6e5b404d.js → cdbc005eebec1503b99d.js} +1 -1
  66. package/assets/esri/core/workers/chunks/{7e596478507466953e65.js → cef4af64860ebbfc1c47.js} +1 -1
  67. package/assets/esri/core/workers/chunks/d72488db62fcf39447b6.js +1 -0
  68. package/assets/esri/core/workers/chunks/de6cff7b6cbbf99b20d1.js +981 -0
  69. package/assets/esri/core/workers/chunks/e4b84ca8ddfd48dd79b1.js +1 -0
  70. package/assets/esri/core/workers/chunks/e4e2036373166c1d5cf5.js +1 -0
  71. package/assets/esri/core/workers/chunks/e4f93c55eaefab4192b5.js +1 -0
  72. package/assets/esri/core/workers/chunks/e6165e17fbb07bfc40a1.js +1 -0
  73. package/assets/esri/core/workers/chunks/e9e5196b44b6923be1a3.js +1 -0
  74. package/assets/esri/core/workers/chunks/{f678293de9a6d8f5b5db.js → ec89466f76d0ba22525e.js} +1 -1
  75. package/assets/esri/core/workers/chunks/ee45618c45806ab654cb.js +1 -0
  76. package/assets/esri/core/workers/chunks/f4baa5ea2e42b1317941.js +1 -0
  77. package/assets/esri/core/workers/chunks/f760a3e030b0f358a92a.js +1 -0
  78. package/assets/esri/core/workers/chunks/face43cf5abcd2f5bd9d.js +1 -0
  79. package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
  80. package/assets/esri/themes/base/_mixins.scss +4 -1
  81. package/assets/esri/themes/base/icons/style.scss +11 -2
  82. package/assets/esri/themes/base/widgets/_BasemapLayerList.scss +13 -10
  83. package/assets/esri/themes/base/widgets/_CoordinateConversion.scss +4 -2
  84. package/assets/esri/themes/base/widgets/_Directions.scss +5 -3
  85. package/assets/esri/themes/base/widgets/_Editor.scss +5 -2
  86. package/assets/esri/themes/base/widgets/_ElevationProfile.scss +6 -4
  87. package/assets/esri/themes/base/widgets/_FeatureTable.scss +6 -0
  88. package/assets/esri/themes/base/widgets/_ItemList.scss +1 -1
  89. package/assets/esri/themes/base/widgets/_LayerList.scss +13 -9
  90. package/assets/esri/themes/base/widgets/_Popup.scss +4 -2
  91. package/assets/esri/themes/base/widgets/_Print.scss +24 -11
  92. package/assets/esri/themes/base/widgets/_Search.scss +4 -2
  93. package/assets/esri/themes/base/widgets/_TableList.scss +9 -7
  94. package/assets/esri/themes/base/widgets/_Weather.scss +12 -0
  95. package/assets/esri/themes/base/widgets/_Widget.scss +18 -9
  96. package/assets/esri/themes/dark/main.css +1 -1
  97. package/assets/esri/themes/dark-blue/main.css +1 -1
  98. package/assets/esri/themes/dark-green/main.css +1 -1
  99. package/assets/esri/themes/dark-purple/main.css +1 -1
  100. package/assets/esri/themes/dark-red/main.css +1 -1
  101. package/assets/esri/themes/light/main.css +1 -1
  102. package/assets/esri/themes/light/view.css +1 -1
  103. package/assets/esri/themes/light-blue/main.css +1 -1
  104. package/assets/esri/themes/light-green/main.css +1 -1
  105. package/assets/esri/themes/light-purple/main.css +1 -1
  106. package/assets/esri/themes/light-red/main.css +1 -1
  107. package/assets/esri/widgets/Weather/t9n/Weather.json +1 -1
  108. package/assets/esri/widgets/Weather/t9n/Weather_en.json +1 -1
  109. package/chunks/CloudsComposition.glsl.js +4 -4
  110. package/chunks/ComponentShader.glsl.js +19 -19
  111. package/chunks/DefaultMaterial.glsl.js +2 -2
  112. package/chunks/Terrain.glsl.js +11 -11
  113. package/chunks/WaterSurface.glsl.js +21 -21
  114. package/chunks/pe.js +1 -1
  115. package/chunks/vec3.js +1 -1
  116. package/chunks/vxlLayer.js +1 -1
  117. package/core/accessorSupport/ensureType.js +1 -1
  118. package/core/accessorSupport/get.js +1 -1
  119. package/core/accessorSupport/read.js +1 -1
  120. package/core/accessorSupport/set.js +1 -1
  121. package/core/accessorSupport/write.js +1 -1
  122. package/core/has.js +1 -1
  123. package/core/libs/gl-matrix-2/math/vec3.js +1 -1
  124. package/core/typedArrayUtil.js +1 -1
  125. package/core/workers/workerFactory.js +1 -1
  126. package/geometry/pe.js +1 -1
  127. package/geometry/support/axisAngleDegrees.js +1 -1
  128. package/geometry/support/heightModelInfoUtils.js +1 -1
  129. package/interfaces.d.ts +315 -78
  130. package/layers/RouteLayer.js +1 -1
  131. package/layers/VoxelLayer.js +1 -1
  132. package/layers/VoxelWasmPerScene.js +1 -1
  133. package/layers/mixins/OperationalLayer.js +1 -1
  134. package/layers/support/RasterWorker.js +1 -1
  135. package/layers/support/rasterDatasets/BaseRaster.js +1 -1
  136. package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
  137. package/libs/vxl/enums.js +1 -1
  138. package/package.json +2 -2
  139. package/popup/content/AttachmentsContent.js +1 -1
  140. package/popup/content/support/mediaInfoTypes.js +1 -1
  141. package/portal/schemas/buildingSceneLayerItem.js +1 -1
  142. package/portal/schemas/definitions.js +1 -1
  143. package/portal/schemas/integratedMeshLayerItem.js +1 -1
  144. package/portal/schemas/pointCloudLayerItem.js +1 -1
  145. package/portal/schemas/sceneLayerItem.js +1 -1
  146. package/portal/schemas/webScene.js +1 -1
  147. package/rasterRenderers.js +1 -1
  148. package/rest/find.js +1 -1
  149. package/rest/geometryService/generalize.js +1 -1
  150. package/rest/geometryService/lengths.js +1 -1
  151. package/rest/geometryService/offset.js +1 -1
  152. package/rest/geometryService/relation.js +1 -1
  153. package/rest/geometryService/trimExtend.js +1 -1
  154. package/rest/identify.js +1 -1
  155. package/{tasks → rest}/operations/find.js +0 -0
  156. package/{tasks → rest}/operations/generalize.js +0 -0
  157. package/rest/operations/identify.js +5 -0
  158. package/{tasks → rest}/operations/lengths.js +0 -0
  159. package/{tasks → rest}/operations/offset.js +0 -0
  160. package/{tasks → rest}/operations/relation.js +0 -0
  161. package/{tasks → rest}/operations/trimExtend.js +0 -0
  162. package/{tasks → rest}/operations/urlUtils.js +0 -0
  163. package/rest/print.js +1 -1
  164. package/rest/query/operations/query.js +1 -1
  165. package/rest/query/operations/queryAttachments.js +1 -1
  166. package/rest/query/operations/queryRelatedRecords.js +1 -1
  167. package/rest/query/operations/queryTopFeatures.js +1 -1
  168. package/rest/route/utils.js +1 -1
  169. package/rest/support/NetworkServiceDescription.js +1 -1
  170. package/rest/support/RouteInfo.js +1 -1
  171. package/rest/support/RouteParameters.js +1 -1
  172. package/rest/support/RouteSettings.js +5 -0
  173. package/rest/support/Stop.js +1 -1
  174. package/rest/support/networkEnums.js +1 -1
  175. package/support/revision.js +1 -1
  176. package/symbols/Font.js +1 -1
  177. package/symbols/LabelSymbol3D.js +1 -1
  178. package/symbols/PointSymbol3D.js +1 -1
  179. package/symbols/TextSymbol.js +1 -1
  180. package/symbols/TextSymbol3DLayer.js +1 -1
  181. package/symbols/cim/CIMSymbolHelper.js +1 -1
  182. package/symbols/cim/CIMSymbolRasterizer.js +1 -1
  183. package/symbols/cim/cimAnalyzer.js +1 -1
  184. package/symbols/cim/placements/PlacementAlongLineSameSize.js +1 -1
  185. package/symbols/support/Symbol3DVerticalOffset.js +1 -1
  186. package/symbols/support/cimSymbolUtils.js +1 -1
  187. package/symbols/support/previewCIMSymbol.js +1 -1
  188. package/symbols/support/previewSymbol2D.js +1 -1
  189. package/symbols/support/previewSymbol3D.js +1 -1
  190. package/symbols/support/previewWebStyleSymbol.js +1 -1
  191. package/symbols/support/svgUtils.js +1 -1
  192. package/symbols/support/textUtils.js +5 -0
  193. package/symbols.js +1 -1
  194. package/views/2d/engine/vectorTiles/style/VectorTilesRequestManager.js +1 -1
  195. package/views/2d/engine/webgl/brushes/raster/BrushRasterBitmap.js +1 -1
  196. package/views/2d/engine/webgl/mesh/templates/WGLFillTemplate.js +1 -1
  197. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  198. package/views/2d/layers/features/sources/BaseFeatureSource.js +1 -1
  199. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  200. package/views/2d/support/engineHelpers.js +1 -1
  201. package/views/3d/environment/CloudsComposition.glsl.js +1 -1
  202. package/views/3d/environment/CloudsComposition.js +1 -1
  203. package/views/3d/environment/CloudsGenerator.js +1 -1
  204. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  205. package/views/3d/environment/Fog.js +1 -1
  206. package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
  207. package/views/3d/environment/weather.js +1 -1
  208. package/views/3d/interactive/editingTools/transformGraphic/ScaleRotateMeshAdapter.js +1 -1
  209. package/views/3d/layers/FeatureLayerViewBase3D.js +1 -1
  210. package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
  211. package/views/3d/layers/GraphicsLayerView3D.js +1 -1
  212. package/views/3d/layers/GraphicsView3D.js +1 -1
  213. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  214. package/views/3d/layers/VoxelLayerView3D.js +1 -1
  215. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  216. package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayer.js +1 -1
  217. package/views/3d/layers/graphics/Graphics3DElevationAlignment.js +1 -1
  218. package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +5 -0
  219. package/views/3d/layers/graphics/Graphics3DFrustumVisibility.js +1 -1
  220. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  221. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  222. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  223. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  224. package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
  225. package/views/3d/layers/graphics/Graphics3DSymbolCreationContext.js +1 -1
  226. package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
  227. package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
  228. package/views/3d/layers/graphics/Graphics3DWaterSymbolLayer.js +1 -1
  229. package/views/3d/layers/graphics/{Graphics3DGraphicLikeLayerView.js → GraphicsProcessor.js} +1 -1
  230. package/views/3d/layers/graphics/QueryEngine.js +1 -1
  231. package/views/3d/support/pointsOfInterest/Focus.js +1 -1
  232. package/views/3d/terrain/OverlayRenderer.js +1 -1
  233. package/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js +7 -1
  234. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +28 -24
  235. package/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl.js +21 -13
  236. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +2 -2
  237. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +12 -14
  238. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  239. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  240. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  241. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  242. package/views/3d/webgl-engine/lib/TextRenderParameters.js +1 -1
  243. package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
  244. package/views/3d/webgl-engine/lib/intersectorUtilsConversions.js +1 -1
  245. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  246. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  247. package/views/3d/webgl-engine/materials/WaterTechnique.js +1 -1
  248. package/views/3d/webgl-engine/parts/Model.js +1 -1
  249. package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
  250. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  251. package/views/3d/webgl-engine/shaders/RealisticTreeTechnique.js +1 -1
  252. package/views/3d/webgl-engine/shaders/WaterSurface.glsl.js +1 -1
  253. package/views/SceneView.js +1 -1
  254. package/views/interactive/dragEventPipeline.js +1 -1
  255. package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
  256. package/views/support/DefaultsFromMap.js +1 -1
  257. package/views/webgl/ContextState.js +1 -1
  258. package/views/webgl/FramebufferObject.js +1 -1
  259. package/views/webgl/Renderbuffer.js +1 -1
  260. package/views/webgl/RenderingContext.js +1 -1
  261. package/views/webgl/Texture.js +1 -1
  262. package/views/webgl/Util.js +1 -1
  263. package/views/webgl/enums.js +1 -1
  264. package/views/webgl/rasterUtils.js +1 -1
  265. package/views/webgl/testFloatBufferBlend.js +1 -1
  266. package/widgets/Attachments.js +1 -1
  267. package/widgets/Editor/workflowUtils.js +1 -1
  268. package/widgets/Feature/FeatureExpression.js +1 -1
  269. package/widgets/Feature/FeatureMedia/FeatureMediaViewModel.js +1 -1
  270. package/widgets/Feature/FeatureMedia.js +1 -1
  271. package/widgets/Feature/FeatureViewModel.js +1 -1
  272. package/widgets/FeatureForm/InputField.js +1 -1
  273. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  274. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  275. package/widgets/FeatureTable.js +1 -1
  276. package/widgets/LayerList/LayerListViewModel.js +1 -1
  277. package/widgets/Popup/PopupViewModel.js +1 -1
  278. package/widgets/Popup/actionUtils.js +1 -1
  279. package/widgets/Slice/SliceViewModel.js +1 -1
  280. package/widgets/Slider/SliderViewModel.js +1 -1
  281. package/widgets/Slider.js +1 -1
  282. package/widgets/Weather/WeatherViewModel.js +1 -1
  283. package/widgets/Weather/css.js +1 -1
  284. package/widgets/Weather.js +1 -1
  285. package/widgets/support/InteractiveAnalysisViewModel.js +1 -1
  286. package/widgets/support/InteractiveToolViewModel.js +1 -1
  287. package/widgets/support/geolocationUtils.js +1 -1
  288. package/assets/components/assets/calcite-icon/checkSquareF16.json +0 -1
  289. package/assets/components/assets/calcite-icon/checkSquareF24.json +0 -1
  290. package/assets/components/assets/calcite-icon/checkSquareF32.json +0 -1
  291. package/assets/components/assets/calcite-icon/lineSolid4.json +0 -1
  292. package/assets/components/assets/calcite-icon/squareF16.json +0 -1
  293. package/assets/components/assets/calcite-icon/squareF24.json +0 -1
  294. package/assets/components/assets/calcite-icon/squareF32.json +0 -1
  295. package/assets/components/assets/calcite-icon/xHexagon16.json +0 -1
  296. package/assets/components/assets/calcite-icon/xHexagon24.json +0 -1
  297. package/assets/components/assets/calcite-icon/xHexagon32.json +0 -1
  298. package/assets/components/assets/calcite-icon/xHexagonF16.json +0 -1
  299. package/assets/components/assets/calcite-icon/xHexagonF24.json +0 -1
  300. package/assets/components/assets/calcite-icon/xHexagonF32.json +0 -1
  301. package/assets/components/assets/calcite-icon/xOctagonF16.json +0 -1
  302. package/assets/components/assets/calcite-icon/xOctagonF24.json +0 -1
  303. package/assets/components/assets/calcite-icon/xOctagonF32.json +0 -1
  304. package/assets/esri/core/workers/chunks/01ef8de7f76a8c61b464.js +0 -1
  305. package/assets/esri/core/workers/chunks/09da224052976e290828.js +0 -1
  306. package/assets/esri/core/workers/chunks/0f254c3e91e8fee55f28.js +0 -1
  307. package/assets/esri/core/workers/chunks/20411bb8e04703962ce6.js +0 -1
  308. package/assets/esri/core/workers/chunks/21a77eed1a4ef5b0ff08.js +0 -1
  309. package/assets/esri/core/workers/chunks/23745a5ab47c840dc452.js +0 -1
  310. package/assets/esri/core/workers/chunks/2416f8bf8bbd2ec786ab.js +0 -1
  311. package/assets/esri/core/workers/chunks/2d947080a27db6ce0d75.js +0 -1
  312. package/assets/esri/core/workers/chunks/2e445a8735ea2adb641a.js +0 -1
  313. package/assets/esri/core/workers/chunks/32f8c4af7e70ebdcb19e.js +0 -1
  314. package/assets/esri/core/workers/chunks/3564e14010953def6df9.js +0 -1
  315. package/assets/esri/core/workers/chunks/390d9021169e65c10eb8.js +0 -1
  316. package/assets/esri/core/workers/chunks/3a9740dccda6a733313c.js +0 -1
  317. package/assets/esri/core/workers/chunks/403c7d64f12f00330d88.js +0 -1
  318. package/assets/esri/core/workers/chunks/4409d77c9734de4e82a7.js +0 -1
  319. package/assets/esri/core/workers/chunks/4c301ca9c493b96df746.js +0 -1
  320. package/assets/esri/core/workers/chunks/60371c0f750cde87656d.js +0 -1
  321. package/assets/esri/core/workers/chunks/615aa2d3ecafe30c80c0.js +0 -1
  322. package/assets/esri/core/workers/chunks/631c5b514bb73782c570.js +0 -1
  323. package/assets/esri/core/workers/chunks/6c1e92ff4c732dfda756.js +0 -1
  324. package/assets/esri/core/workers/chunks/722a10c65456844d72b9.js +0 -1
  325. package/assets/esri/core/workers/chunks/75d53b28afe732c459b2.js +0 -1
  326. package/assets/esri/core/workers/chunks/85b34d91cf07567d6873.js +0 -1
  327. package/assets/esri/core/workers/chunks/8967288145f8fbd20e7d.js +0 -1
  328. package/assets/esri/core/workers/chunks/89de05207744149fb58b.js +0 -1
  329. package/assets/esri/core/workers/chunks/8fdd5bca3716816d359b.js +0 -1
  330. package/assets/esri/core/workers/chunks/987182b3a578fc7de251.js +0 -1
  331. package/assets/esri/core/workers/chunks/99a777693e4539f0b03b.js +0 -1
  332. package/assets/esri/core/workers/chunks/9d9dffc8884d66a258e4.js +0 -1
  333. package/assets/esri/core/workers/chunks/a28b53c61bddefb6616e.js +0 -1
  334. package/assets/esri/core/workers/chunks/a6ff3db3493543df81bc.js +0 -1
  335. package/assets/esri/core/workers/chunks/a8c13529367c037cdd94.js +0 -1
  336. package/assets/esri/core/workers/chunks/a960074644c3722be71e.js +0 -1
  337. package/assets/esri/core/workers/chunks/ac8dca61ade28c542ae2.js +0 -1
  338. package/assets/esri/core/workers/chunks/b99e69302ea701fff0ea.js +0 -971
  339. package/assets/esri/core/workers/chunks/b9de831ac379cf1d2969.js +0 -1
  340. package/assets/esri/core/workers/chunks/bc790b2f964144d10abe.js +0 -1
  341. package/assets/esri/core/workers/chunks/be2b7cce79fd41627931.js +0 -1
  342. package/assets/esri/core/workers/chunks/c13dfdd548dcb1bdb294.js +0 -1
  343. package/assets/esri/core/workers/chunks/c3eca92d02958732e141.js +0 -1
  344. package/assets/esri/core/workers/chunks/c6bd943fe8fd13bb4806.js +0 -1
  345. package/assets/esri/core/workers/chunks/c6f94b92e866b881d9b9.js +0 -1
  346. package/assets/esri/core/workers/chunks/cb68db7169b9dfd1c3ff.js +0 -1
  347. package/assets/esri/core/workers/chunks/cc96608b2802fbfe7a08.js +0 -1
  348. package/assets/esri/core/workers/chunks/cd02fe27eb07681cb366.js +0 -1
  349. package/assets/esri/core/workers/chunks/d52108864136c5a8a618.js +0 -1
  350. package/assets/esri/core/workers/chunks/da1c2873bdbc0956dca0.js +0 -1
  351. package/assets/esri/core/workers/chunks/dd433c160f7a0c120b82.js +0 -1
  352. package/assets/esri/core/workers/chunks/de03439ca2c9782bf325.js +0 -1
  353. package/assets/esri/core/workers/chunks/e2d68bcd2f99a65387bf.js +0 -1
  354. package/assets/esri/core/workers/chunks/ef8b75b92cf549e0507e.js +0 -1
  355. package/assets/esri/core/workers/chunks/f7fc4c993536e62f7f3e.js +0 -1
  356. package/assets/esri/core/workers/chunks/fd3e5d823dc7917f4b8f.js +0 -1
  357. package/symbols/support/constants.js +0 -5
  358. package/tasks/operations/identify.js +0 -5
  359. package/views/3d/layers/graphics/Graphics3DFeatureLikeLayerView.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../PopupTemplate.js";import{symbolTypes as i}from"../../symbols.js";import{JSONSupport as r}from"../../core/JSONSupport.js";import{clone as a}from"../../core/lang.js";import{isNone as s,isSome as o,unwrap as l}from"../../core/maybe.js";import{property as n}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import{reader as u}from"../../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../../core/accessorSupport/decorators/subclass.js";import{writer as d}from"../../core/accessorSupport/decorators/writer.js";import m from"../../geometry/Point.js";import{getTimezoneOffset as b,getPrefixedProperties as c}from"../route/utils.js";import{curbApproachJsonMap as v,locationTypeJsonMap as T,sideOfEdgeJsonMap as f,statusJsonMap as h}from"./networkEnums.js";import{fromJSON as y}from"../../symbols/support/jsonUtils.js";var C;let S=C=class extends r{constructor(e){super(e),this.arriveCurbApproach=null,this.arriveTime=null,this.arriveTimeOffset=null,this.bearing=null,this.bearingTol=null,this.cumulativeCosts=null,this.cumulativeDistance=null,this.cumulativeDuration=null,this.curbApproach=null,this.departCurbApproach=null,this.departTime=null,this.departTimeOffset=null,this.distanceToNetworkInMeters=null,this.geometry=null,this.lateMinutes=null,this.locationType=null,this.name=null,this.navLatency=null,this.objectId=null,this.popupTemplate=null,this.posAlong=null,this.routeName=null,this.serviceCosts=null,this.serviceDistance=null,this.serviceTime=null,this.sequence=null,this.sideOfEdge=null,this.snapX=null,this.snapY=null,this.snapZ=null,this.sourceId=null,this.sourceOid=null,this.status=null,this.symbol=null,this.timeWindowEnd=null,this.timeWindowEndOffset=null,this.timeWindowStart=null,this.timeWindowStartOffset=null,this.waitTime=null}readArriveTimeOffset(e,t){return b(t.attributes.ArriveTime,t.attributes.ArriveTimeUTC)}readCumulativeCosts(e,t){return c(t.attributes,"Cumul_")}readDepartTimeOffset(e,t){return b(t.attributes.DepartTime,t.attributes.DepartTimeUTC)}readServiceCosts(e,t){return c(t.attributes,"Attr_")}writeServiceCosts(e,t){if(!s(e)){t.attributes||(t.attributes={});for(const i in e)t.attributes[`Attr_${i}`]=e[i]}}writeTimeWindowEnd(e,t){s(e)||(t.attributes||(t.attributes={}),t.attributes.TimeWindowEnd=e.getTime())}writeTimeWindowStart(e,t){s(e)||(t.attributes||(t.attributes={}),t.attributes.TimeWindowStart=e.getTime())}static fromPortalJSON(e){var i,r,a,s,l,n,u,p,d,b;return new C({arriveCurbApproach:o(e.attributes.ArrivalCurbApproach)?v.fromJSON(e.attributes.ArrivalCurbApproach):null,arriveTime:o(e.attributes.ArrivalTime)?new Date(e.attributes.ArrivalTime):null,arriveTimeOffset:e.attributes.ArrivalUTCOffset,cumulativeCosts:o(e.attributes.CumulativeCosts)?JSON.parse(e.attributes.CumulativeCosts):null,cumulativeDistance:null!=(i=e.attributes.CumulativeMeters)?i:null,cumulativeDuration:null!=(r=e.attributes.CumulativeMinutes)?r:null,curbApproach:o(e.attributes.CurbApproach)?v.fromJSON(e.attributes.CurbApproach):null,departCurbApproach:o(e.attributes.DepartureCurbApproach)?v.fromJSON(e.attributes.DepartureCurbApproach):null,departTime:o(e.attributes.DepartureTime)?new Date(e.attributes.DepartureTime):null,departTimeOffset:null!=(a=e.attributes.DepartureUTCOffset)?a:null,geometry:m.fromJSON(e.geometry),lateMinutes:null!=(s=e.attributes.LateMinutes)?s:null,locationType:o(e.attributes.LocationType)?T.fromJSON(e.attributes.LocationType):null,name:e.attributes.Name,objectId:e.attributes.__OBJECTID,popupTemplate:o(e.popupInfo)?t.fromJSON(e.popupInfo):null,routeName:e.attributes.RouteName,sequence:null!=(l=e.attributes.Sequence)?l:null,serviceCosts:o(e.attributes.ServiceCosts)?JSON.parse(e.attributes.ServiceCosts):null,serviceDistance:null!=(n=e.attributes.ServiceMeters)?n:null,serviceTime:null!=(u=e.attributes.ServiceMinutes)?u:null,status:o(e.attributes.Status)?h.fromJSON(e.attributes.Status):null,symbol:o(e.symbol)?y(e.symbol):null,timeWindowEnd:o(e.attributes.TimeWindowEnd)?new Date(e.attributes.TimeWindowEnd):null,timeWindowEndOffset:null!=(p=e.attributes.TimeWindowEndUTCOffset)?p:null,timeWindowStart:o(e.attributes.TimeWindowStart)?new Date(e.attributes.TimeWindowStart):null,timeWindowStartOffset:null!=(d=e.attributes.TimeWindowStartUTCOffset)?d:null,waitTime:null!=(b=e.attributes.WaitMinutes)?b:null})}clone(){return new C(a({arriveCurbApproach:this.arriveCurbApproach,arriveTime:this.arriveTime,arriveTimeOffset:this.arriveTimeOffset,bearing:this.bearing,bearingTol:this.bearingTol,cumulativeCosts:this.cumulativeCosts,cumulativeDistance:this.cumulativeDistance,cumulativeTime:this.cumulativeDuration,curbApproach:this.curbApproach,departCurbApproach:this.departCurbApproach,departTime:this.departTime,departTimeOffset:this.departTimeOffset,distanceToNetworkInMeters:this.distanceToNetworkInMeters,geometry:this.geometry,lateMinutes:this.lateMinutes,locationType:this.locationType,name:this.name,navLatency:this.navLatency,objectId:this.objectId,popupTemplate:this.popupTemplate,posAlong:this.posAlong,routeName:this.routeName,serviceCosts:this.serviceCosts,serviceDistance:this.serviceDistance,serviceTime:this.serviceTime,sequence:this.sequence,sideOfEdge:this.sideOfEdge,snapX:this.snapX,snapY:this.snapY,snapZ:this.snapZ,sourceId:this.sourceId,sourceOid:this.sourceOid,status:this.status,symbol:this.symbol,timeWindowEnd:this.timeWindowEnd,timeWindowEndOffset:this.timeWindowEndOffset,timeWindowStart:this.timeWindowStart,timeWindowStartOffset:this.timeWindowStartOffset,waitTime:this.waitTime}))}toPortalJSON(){var e,t;return{geometry:o(this.geometry)?this.geometry.toJSON():null,attributes:{__OBJECTID:l(this.objectId),ArrivalCurbApproach:o(this.arriveCurbApproach)?v.toJSON(this.arriveCurbApproach):null,ArrivalTime:o(this.arriveTime)?this.arriveTime.getTime():null,ArrivalUTCOffset:this.arriveTimeOffset,CumulativeCosts:o(this.cumulativeCosts)?JSON.stringify(this.cumulativeCosts):null,CumulativeMeters:this.cumulativeDistance,CumulativeMinutes:this.cumulativeDuration,CurbApproach:o(this.curbApproach)?v.toJSON(this.curbApproach):null,DepartureCurbApproach:o(this.departCurbApproach)?v.toJSON(this.departCurbApproach):null,DepartureTime:o(this.departTime)?this.departTime.getTime():null,DepartureUTCOffset:this.departTimeOffset,LateMinutes:this.lateMinutes,LocationType:o(this.locationType)?T.toJSON(this.locationType):null,Name:l(this.name),RouteName:l(this.routeName),Sequence:this.sequence,ServiceCosts:o(this.serviceCosts)?JSON.stringify(this.serviceCosts):null,ServiceMeters:this.serviceDistance,ServiceMinutes:this.serviceTime,Status:o(this.status)?h.toJSON(this.status):null,TimeWindowEnd:o(this.timeWindowEnd)?this.timeWindowEnd.getTime():null,TimeWindowEndUTCOffset:null!=(e=this.timeWindowEndOffset)?e:this.arriveTimeOffset,TimeWindowStart:o(this.timeWindowStart)?this.timeWindowStart.getTime():null,TimeWindowStartUTCOffset:null!=(t=this.timeWindowEndOffset)?t:this.arriveTimeOffset,WaitMinutes:this.waitTime},symbol:o(this.symbol)?this.symbol.toJSON():null,popupInfo:o(this.popupTemplate)?this.popupTemplate.toJSON():null}}};S.fields=[{name:"__OBJECTID",alias:"OBJECTID",type:"esriFieldTypeOID",editable:!1,nullable:!1,domain:null},{name:"ArrivalCurbApproach",alias:"Arrival Curb Approach",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNACurbApproachType",codedValues:[{name:"Either side",code:0},{name:"From the right",code:1},{name:"From the left",code:2},{name:"Depart in the same direction",code:3}]}},{name:"ArrivalTime",alias:"Arrival Time",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!0},{name:"ArrivalUTCOffset",alias:"Arrival Time: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"CumulativeCosts",alias:"Cumulative Costs",type:"esriFieldTypeString",length:1048576,editable:!0,nullable:!0,visible:!1,domain:null},{name:"CumulativeMeters",alias:"Cumulative Meters",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!0},{name:"CumulativeMinutes",alias:"Cumulative Minutes",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!0},{name:"CurbApproach",alias:"Curb Approach",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!1,domain:{type:"codedValue",name:"esriNACurbApproachType",codedValues:[{name:"Either side",code:0},{name:"From the right",code:1},{name:"From the left",code:2},{name:"Depart in the same direction",code:3}]}},{name:"DepartureCurbApproach",alias:"Departure Curb Approach",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNACurbApproachType",codedValues:[{name:"Either side",code:0},{name:"From the right",code:1},{name:"From the left",code:2},{name:"Depart in the same direction",code:3}]}},{name:"DepartureTime",alias:"Departure Time",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!0},{name:"DepartureUTCOffset",alias:"Departure Time: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"LateMinutes",alias:"Minutes Late",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1},{name:"LocationType",alias:"Location Type",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNALocationType",codedValues:[{name:"Stop",code:0},{name:"Waypoint",code:1}]}},{name:"Name",alias:"Name",type:"esriFieldTypeString",length:255,editable:!0,nullable:!0,visible:!0},{name:"RouteName",alias:"Route Name",type:"esriFieldTypeString",length:255,editable:!0,nullable:!0,visible:!0},{name:"Sequence",alias:"Sequence",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"ServiceCosts",alias:"Service Costs",type:"esriFieldTypeString",length:1048576,editable:!0,nullable:!0,visible:!1,domain:null},{name:"ServiceMeters",alias:"Service Meters",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1},{name:"ServiceMinutes",alias:"Service Minutes",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1},{name:"Status",alias:"Status",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNAObjectStatus",codedValues:[{name:"OK",code:0},{name:"Not Located on Network",code:1},{name:"Network Unbuilt",code:2},{name:"Prohibited Street",code:3},{name:"Invalid Field Values",code:4},{name:"Cannot Reach",code:5},{name:"Time Window Violation",code:6}]}},{name:"TimeWindowEnd",alias:"Time Window End",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!1},{name:"TimeWindowEndUTCOffset",alias:"Time Window End: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"TimeWindowStart",alias:"Time Window Start",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!1},{name:"TimeWindowStartUTCOffset",alias:"Time Window Start: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"WaitMinutes",alias:"Minutes Early",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1}],S.popupInfo={title:"{Name}",fieldInfos:[{fieldName:"Name",label:"Name",isEditable:!0,tooltip:"",visible:!0,stringFieldOption:"textbox"},{fieldName:"RouteName",label:"Route Name",isEditable:!0,tooltip:"",visible:!0,stringFieldOption:"textbox"},{fieldName:"Sequence",label:"Sequence",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ArrivalTime",label:"Arrival Time",isEditable:!0,tooltip:"",visible:!0,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"ArrivalUTCOffset",label:"Arrival Time: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"DepartureTime",label:"Departure Time",isEditable:!0,tooltip:"",visible:!0,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"DepartureUTCOffset",label:"Departure Time: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"CurbApproach",label:"Curb Approach",isEditable:!0,tooltip:"",visible:!1,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ArrivalCurbApproach",label:"Arrival Curb Approach",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"DepartureCurbApproach",label:"Departure Curb Approach",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"Status",label:"Status",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"LocationType",label:"Location Type",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"TimeWindowStart",label:"Time Window Start",isEditable:!0,tooltip:"",visible:!1,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"TimeWindowStartUTCOffset",label:"Time Window Start: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!1,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"TimeWindowEnd",label:"Time Window End",isEditable:!0,tooltip:"",visible:!1,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"TimeWindowEndUTCOffset",label:"Time Window End: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!1,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ServiceMinutes",label:"Service Minutes",isEditable:!0,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ServiceMeters",label:"Service Meters",isEditable:!0,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ServiceCosts",label:"Service Costs",isEditable:!0,tooltip:"",visible:!1,stringFieldOption:"textbox"},{fieldName:"CumulativeMinutes",label:"Cumulative Minutes",isEditable:!1,tooltip:"",visible:!0,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"CumulativeMeters",label:"Cumulative Meters",isEditable:!1,tooltip:"",visible:!0,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"CumulativeCosts",label:"Cumulative Costs",isEditable:!0,tooltip:"",visible:!1,stringFieldOption:"textbox"},{fieldName:"LateMinutes",label:"Minutes Late",isEditable:!1,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"WaitMinutes",label:"Minutes Early",isEditable:!1,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"}],description:null,showAttachments:!1,mediaInfos:[]},e([n({type:v.apiValues,json:{read:{source:"attributes.ArrivalCurbApproach",reader:v.read}}})],S.prototype,"arriveCurbApproach",void 0),e([n({type:Date,json:{read:{source:"attributes.ArriveTimeUTC"}}})],S.prototype,"arriveTime",void 0),e([n()],S.prototype,"arriveTimeOffset",void 0),e([u("arriveTimeOffset",["attributes.ArriveTime","attributes.ArriveTimeUTC"])],S.prototype,"readArriveTimeOffset",null),e([n({json:{name:"attributes.Bearing",read:!1,write:!0}})],S.prototype,"bearing",void 0),e([n({json:{name:"attributes.BearingTol",read:!1,write:!0}})],S.prototype,"bearingTol",void 0),e([n()],S.prototype,"cumulativeCosts",void 0),e([u("cumulativeCosts",["attributes"])],S.prototype,"readCumulativeCosts",null),e([n({json:{read:!1}})],S.prototype,"cumulativeDistance",void 0),e([n({json:{read:!1}})],S.prototype,"cumulativeDuration",void 0),e([n({type:v.apiValues,json:{name:"attributes.CurbApproach",read:{reader:v.read},write:{writer:v.write}}})],S.prototype,"curbApproach",void 0),e([n({type:v.apiValues,json:{read:{source:"attributes.DepartCurbApproach",reader:v.read}}})],S.prototype,"departCurbApproach",void 0),e([n({type:Date,json:{read:{source:"attributes.DepartTimeUTC"}}})],S.prototype,"departTime",void 0),e([n()],S.prototype,"departTimeOffset",void 0),e([u("departTimeOffset",["attributes.DepartTime","attributes.DepartTimeUTC"])],S.prototype,"readDepartTimeOffset",null),e([n({json:{read:{source:"attributes.DistanceToNetworkInMeters"}}})],S.prototype,"distanceToNetworkInMeters",void 0),e([n({type:m,json:{write:!0}})],S.prototype,"geometry",void 0),e([n({json:{name:"attributes.LateMinutes",read:!1}})],S.prototype,"lateMinutes",void 0),e([n({type:T.apiValues,json:{name:"attributes.LocationType",read:{reader:T.read},write:{writer:T.write}}})],S.prototype,"locationType",void 0),e([n({json:{name:"attributes.Name",write:!0}})],S.prototype,"name",void 0),e([n({json:{read:{source:"attributes.NavLatency"}}})],S.prototype,"navLatency",void 0),e([n({json:{name:"attributes.ObjectID",write:!0}})],S.prototype,"objectId",void 0),e([n({type:t,json:{read:!1}})],S.prototype,"popupTemplate",void 0),e([n({json:{read:{source:"attributes.PosAlong"}}})],S.prototype,"posAlong",void 0),e([n({json:{name:"attributes.RouteName",write:!0}})],S.prototype,"routeName",void 0),e([n()],S.prototype,"serviceCosts",void 0),e([u("serviceCosts",["attributes"])],S.prototype,"readServiceCosts",null),e([d("serviceCosts")],S.prototype,"writeServiceCosts",null),e([n({json:{read:!1}})],S.prototype,"serviceDistance",void 0),e([n({json:{read:!1}})],S.prototype,"serviceTime",void 0),e([n({json:{name:"attributes.Sequence",write:!0}})],S.prototype,"sequence",void 0),e([n({type:f.apiValues,json:{read:{source:"attributes.SideOfEdge",reader:f.read}}})],S.prototype,"sideOfEdge",void 0),e([n({json:{read:{source:"attributes.SnapX"}}})],S.prototype,"snapX",void 0),e([n({json:{read:{source:"attributes.SnapY"}}})],S.prototype,"snapY",void 0),e([n({json:{read:{source:"attributes.SnapZ"}}})],S.prototype,"snapZ",void 0),e([n({json:{read:{source:"attributes.SourceID"}}})],S.prototype,"sourceId",void 0),e([n({json:{read:{source:"attributes.SourceOID"}}})],S.prototype,"sourceOid",void 0),e([n({type:h.apiValues,json:{read:{source:"attributes.Status",reader:h.read}}})],S.prototype,"status",void 0),e([n({types:i,json:{read:!1}})],S.prototype,"symbol",void 0),e([n({type:Date,json:{name:"attributes.TimeWindowEnd"}})],S.prototype,"timeWindowEnd",void 0),e([d("timeWindowEnd")],S.prototype,"writeTimeWindowEnd",null),e([n({json:{read:!1}})],S.prototype,"timeWindowEndOffset",void 0),e([n({type:Date,json:{name:"attributes.TimeWindowStart"}})],S.prototype,"timeWindowStart",void 0),e([d("timeWindowStart")],S.prototype,"writeTimeWindowStart",null),e([n({json:{read:!1}})],S.prototype,"timeWindowStartOffset",void 0),e([n({json:{read:!1}})],S.prototype,"waitTime",void 0),S=C=e([p("esri.layers.support.Stop")],S);const O=S;export{O as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../PopupTemplate.js";import{symbolTypes as i}from"../../symbols.js";import{JSONSupport as r}from"../../core/JSONSupport.js";import{clone as a}from"../../core/lang.js";import{isNone as s,isSome as o,unwrap as l}from"../../core/maybe.js";import{property as n}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import{reader as u}from"../../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../../core/accessorSupport/decorators/subclass.js";import{writer as d}from"../../core/accessorSupport/decorators/writer.js";import m from"../../geometry/Point.js";import{getTimezoneOffset as b,getPrefixedProperties as c}from"../route/utils.js";import{curbApproachJsonMap as v,locationTypeJsonMap as h,sideOfEdgeJsonMap as f,statusJsonMap as T}from"./networkEnums.js";import{fromJSON as y}from"../../symbols/support/jsonUtils.js";var C;let S=C=class extends r{constructor(e){super(e),this.arriveCurbApproach=null,this.arriveTime=null,this.arriveTimeOffset=null,this.bearing=null,this.bearingTol=null,this.cumulativeCosts=null,this.cumulativeDistance=null,this.cumulativeDuration=null,this.curbApproach=null,this.departCurbApproach=null,this.departTime=null,this.departTimeOffset=null,this.distanceToNetworkInMeters=null,this.geometry=null,this.lateDuration=null,this.locationType=null,this.name=null,this.navLatency=null,this.objectId=null,this.popupTemplate=null,this.posAlong=null,this.routeName=null,this.serviceCosts=null,this.serviceDistance=null,this.serviceDuration=null,this.sequence=null,this.sideOfEdge=null,this.snapX=null,this.snapY=null,this.snapZ=null,this.sourceId=null,this.sourceOid=null,this.status=null,this.symbol=null,this.timeWindowEnd=null,this.timeWindowEndOffset=null,this.timeWindowStart=null,this.timeWindowStartOffset=null,this.violations=null,this.waitDuration=null,this.wait=null}readArriveTimeOffset(e,t){return b(t.attributes.ArriveTime,t.attributes.ArriveTimeUTC)}readCumulativeCosts(e,t){return c(t.attributes,"Cumul_")}readDepartTimeOffset(e,t){return b(t.attributes.DepartTime,t.attributes.DepartTimeUTC)}readServiceCosts(e,t){return c(t.attributes,"Attr_")}writeServiceCosts(e,t){if(!s(e)){t.attributes||(t.attributes={});for(const i in e)t.attributes[`Attr_${i}`]=e[i]}}writeTimeWindowEnd(e,t){s(e)||(t.attributes||(t.attributes={}),t.attributes.TimeWindowEnd=e.getTime())}writeTimeWindowStart(e,t){s(e)||(t.attributes||(t.attributes={}),t.attributes.TimeWindowStart=e.getTime())}readViolations(e,t){return c(t.attributes,"Violation_")}readWait(e,t){return c(t.attributes,"Wait_")}static fromPortalJSON(e){var i,r,a,s,l,n,u,p,d,b;return new C({arriveCurbApproach:o(e.attributes.ArrivalCurbApproach)?v.fromJSON(e.attributes.ArrivalCurbApproach):null,arriveTime:o(e.attributes.ArrivalTime)?new Date(e.attributes.ArrivalTime):null,arriveTimeOffset:e.attributes.ArrivalUTCOffset,cumulativeCosts:o(e.attributes.CumulativeCosts)?JSON.parse(e.attributes.CumulativeCosts):null,cumulativeDistance:null!=(i=e.attributes.CumulativeMeters)?i:null,cumulativeDuration:null!=(r=e.attributes.CumulativeMinutes)?r:null,curbApproach:o(e.attributes.CurbApproach)?v.fromJSON(e.attributes.CurbApproach):null,departCurbApproach:o(e.attributes.DepartureCurbApproach)?v.fromJSON(e.attributes.DepartureCurbApproach):null,departTime:o(e.attributes.DepartureTime)?new Date(e.attributes.DepartureTime):null,departTimeOffset:null!=(a=e.attributes.DepartureUTCOffset)?a:null,geometry:m.fromJSON(e.geometry),lateDuration:null!=(s=e.attributes.LateMinutes)?s:null,locationType:o(e.attributes.LocationType)?h.fromJSON(e.attributes.LocationType):null,name:e.attributes.Name,objectId:e.attributes.__OBJECTID,popupTemplate:o(e.popupInfo)?t.fromJSON(e.popupInfo):null,routeName:e.attributes.RouteName,sequence:null!=(l=e.attributes.Sequence)?l:null,serviceCosts:o(e.attributes.ServiceCosts)?JSON.parse(e.attributes.ServiceCosts):null,serviceDistance:null!=(n=e.attributes.ServiceMeters)?n:null,serviceDuration:null!=(u=e.attributes.ServiceMinutes)?u:null,status:o(e.attributes.Status)?T.fromJSON(e.attributes.Status):null,symbol:o(e.symbol)?y(e.symbol):null,timeWindowEnd:o(e.attributes.TimeWindowEnd)?new Date(e.attributes.TimeWindowEnd):null,timeWindowEndOffset:null!=(p=e.attributes.TimeWindowEndUTCOffset)?p:null,timeWindowStart:o(e.attributes.TimeWindowStart)?new Date(e.attributes.TimeWindowStart):null,timeWindowStartOffset:null!=(d=e.attributes.TimeWindowStartUTCOffset)?d:null,waitDuration:null!=(b=e.attributes.WaitMinutes)?b:null})}clone(){return new C(a({arriveCurbApproach:this.arriveCurbApproach,arriveTime:this.arriveTime,arriveTimeOffset:this.arriveTimeOffset,bearing:this.bearing,bearingTol:this.bearingTol,cumulativeCosts:this.cumulativeCosts,cumulativeDistance:this.cumulativeDistance,cumulativeTime:this.cumulativeDuration,curbApproach:this.curbApproach,departCurbApproach:this.departCurbApproach,departTime:this.departTime,departTimeOffset:this.departTimeOffset,distanceToNetworkInMeters:this.distanceToNetworkInMeters,geometry:this.geometry,lateDuration:this.lateDuration,locationType:this.locationType,name:this.name,navLatency:this.navLatency,objectId:this.objectId,popupTemplate:this.popupTemplate,posAlong:this.posAlong,routeName:this.routeName,serviceCosts:this.serviceCosts,serviceDistance:this.serviceDistance,serviceDuration:this.serviceDuration,sequence:this.sequence,sideOfEdge:this.sideOfEdge,snapX:this.snapX,snapY:this.snapY,snapZ:this.snapZ,sourceId:this.sourceId,sourceOid:this.sourceOid,status:this.status,symbol:this.symbol,timeWindowEnd:this.timeWindowEnd,timeWindowEndOffset:this.timeWindowEndOffset,timeWindowStart:this.timeWindowStart,timeWindowStartOffset:this.timeWindowStartOffset,waitDuration:this.waitDuration}))}toPortalJSON(){var e,t;return{geometry:o(this.geometry)?this.geometry.toJSON():null,attributes:{__OBJECTID:l(this.objectId),ArrivalCurbApproach:o(this.arriveCurbApproach)?v.toJSON(this.arriveCurbApproach):null,ArrivalTime:o(this.arriveTime)?this.arriveTime.getTime():null,ArrivalUTCOffset:this.arriveTimeOffset,CumulativeCosts:o(this.cumulativeCosts)?JSON.stringify(this.cumulativeCosts):null,CumulativeMeters:this.cumulativeDistance,CumulativeMinutes:this.cumulativeDuration,CurbApproach:o(this.curbApproach)?v.toJSON(this.curbApproach):null,DepartureCurbApproach:o(this.departCurbApproach)?v.toJSON(this.departCurbApproach):null,DepartureTime:o(this.departTime)?this.departTime.getTime():null,DepartureUTCOffset:this.departTimeOffset,LateMinutes:this.lateDuration,LocationType:o(this.locationType)?h.toJSON(this.locationType):null,Name:l(this.name),RouteName:l(this.routeName),Sequence:this.sequence,ServiceCosts:o(this.serviceCosts)?JSON.stringify(this.serviceCosts):null,ServiceMeters:this.serviceDistance,ServiceMinutes:this.serviceDuration,Status:o(this.status)?T.toJSON(this.status):null,TimeWindowEnd:o(this.timeWindowEnd)?this.timeWindowEnd.getTime():null,TimeWindowEndUTCOffset:null!=(e=this.timeWindowEndOffset)?e:this.arriveTimeOffset,TimeWindowStart:o(this.timeWindowStart)?this.timeWindowStart.getTime():null,TimeWindowStartUTCOffset:null!=(t=this.timeWindowEndOffset)?t:this.arriveTimeOffset,WaitMinutes:this.waitDuration},symbol:o(this.symbol)?this.symbol.toJSON():null,popupInfo:o(this.popupTemplate)?this.popupTemplate.toJSON():null}}};S.fields=[{name:"__OBJECTID",alias:"OBJECTID",type:"esriFieldTypeOID",editable:!1,nullable:!1,domain:null},{name:"ArrivalCurbApproach",alias:"Arrival Curb Approach",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNACurbApproachType",codedValues:[{name:"Either side",code:0},{name:"From the right",code:1},{name:"From the left",code:2},{name:"Depart in the same direction",code:3}]}},{name:"ArrivalTime",alias:"Arrival Time",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!0},{name:"ArrivalUTCOffset",alias:"Arrival Time: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"CumulativeCosts",alias:"Cumulative Costs",type:"esriFieldTypeString",length:1048576,editable:!0,nullable:!0,visible:!1,domain:null},{name:"CumulativeMeters",alias:"Cumulative Meters",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!0},{name:"CumulativeMinutes",alias:"Cumulative Minutes",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!0},{name:"CurbApproach",alias:"Curb Approach",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!1,domain:{type:"codedValue",name:"esriNACurbApproachType",codedValues:[{name:"Either side",code:0},{name:"From the right",code:1},{name:"From the left",code:2},{name:"Depart in the same direction",code:3}]}},{name:"DepartureCurbApproach",alias:"Departure Curb Approach",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNACurbApproachType",codedValues:[{name:"Either side",code:0},{name:"From the right",code:1},{name:"From the left",code:2},{name:"Depart in the same direction",code:3}]}},{name:"DepartureTime",alias:"Departure Time",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!0},{name:"DepartureUTCOffset",alias:"Departure Time: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"LateMinutes",alias:"Minutes Late",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1},{name:"LocationType",alias:"Location Type",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNALocationType",codedValues:[{name:"Stop",code:0},{name:"Waypoint",code:1}]}},{name:"Name",alias:"Name",type:"esriFieldTypeString",length:255,editable:!0,nullable:!0,visible:!0},{name:"RouteName",alias:"Route Name",type:"esriFieldTypeString",length:255,editable:!0,nullable:!0,visible:!0},{name:"Sequence",alias:"Sequence",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"ServiceCosts",alias:"Service Costs",type:"esriFieldTypeString",length:1048576,editable:!0,nullable:!0,visible:!1,domain:null},{name:"ServiceMeters",alias:"Service Meters",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1},{name:"ServiceMinutes",alias:"Service Minutes",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1},{name:"Status",alias:"Status",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0,domain:{type:"codedValue",name:"esriNAObjectStatus",codedValues:[{name:"OK",code:0},{name:"Not Located on Network",code:1},{name:"Network Unbuilt",code:2},{name:"Prohibited Street",code:3},{name:"Invalid Field Values",code:4},{name:"Cannot Reach",code:5},{name:"Time Window Violation",code:6}]}},{name:"TimeWindowEnd",alias:"Time Window End",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!1},{name:"TimeWindowEndUTCOffset",alias:"Time Window End: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"TimeWindowStart",alias:"Time Window Start",type:"esriFieldTypeDate",length:36,editable:!0,nullable:!0,visible:!1},{name:"TimeWindowStartUTCOffset",alias:"Time Window Start: Offset from UTC in Minutes",type:"esriFieldTypeInteger",editable:!0,nullable:!0,visible:!0},{name:"WaitMinutes",alias:"Minutes Early",type:"esriFieldTypeDouble",editable:!0,nullable:!0,visible:!1}],S.popupInfo={title:"{Name}",fieldInfos:[{fieldName:"Name",label:"Name",isEditable:!0,tooltip:"",visible:!0,stringFieldOption:"textbox"},{fieldName:"RouteName",label:"Route Name",isEditable:!0,tooltip:"",visible:!0,stringFieldOption:"textbox"},{fieldName:"Sequence",label:"Sequence",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ArrivalTime",label:"Arrival Time",isEditable:!0,tooltip:"",visible:!0,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"ArrivalUTCOffset",label:"Arrival Time: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"DepartureTime",label:"Departure Time",isEditable:!0,tooltip:"",visible:!0,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"DepartureUTCOffset",label:"Departure Time: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"CurbApproach",label:"Curb Approach",isEditable:!0,tooltip:"",visible:!1,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ArrivalCurbApproach",label:"Arrival Curb Approach",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"DepartureCurbApproach",label:"Departure Curb Approach",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"Status",label:"Status",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"LocationType",label:"Location Type",isEditable:!1,tooltip:"",visible:!0,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"TimeWindowStart",label:"Time Window Start",isEditable:!0,tooltip:"",visible:!1,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"TimeWindowStartUTCOffset",label:"Time Window Start: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!1,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"TimeWindowEnd",label:"Time Window End",isEditable:!0,tooltip:"",visible:!1,format:{dateFormat:"shortDateShortTime24"},stringFieldOption:"textbox"},{fieldName:"TimeWindowEndUTCOffset",label:"Time Window End: Offset from UTC in Minutes",isEditable:!1,tooltip:"",visible:!1,format:{places:0,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ServiceMinutes",label:"Service Minutes",isEditable:!0,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ServiceMeters",label:"Service Meters",isEditable:!0,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"ServiceCosts",label:"Service Costs",isEditable:!0,tooltip:"",visible:!1,stringFieldOption:"textbox"},{fieldName:"CumulativeMinutes",label:"Cumulative Minutes",isEditable:!1,tooltip:"",visible:!0,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"CumulativeMeters",label:"Cumulative Meters",isEditable:!1,tooltip:"",visible:!0,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"CumulativeCosts",label:"Cumulative Costs",isEditable:!0,tooltip:"",visible:!1,stringFieldOption:"textbox"},{fieldName:"LateMinutes",label:"Minutes Late",isEditable:!1,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"},{fieldName:"WaitMinutes",label:"Minutes Early",isEditable:!1,tooltip:"",visible:!1,format:{places:2,digitSeparator:!0},stringFieldOption:"textbox"}],description:null,showAttachments:!1,mediaInfos:[]},e([n({type:v.apiValues,json:{read:{source:"attributes.ArrivalCurbApproach",reader:v.read}}})],S.prototype,"arriveCurbApproach",void 0),e([n({type:Date,json:{read:{source:"attributes.ArriveTimeUTC"}}})],S.prototype,"arriveTime",void 0),e([n()],S.prototype,"arriveTimeOffset",void 0),e([u("arriveTimeOffset",["attributes.ArriveTime","attributes.ArriveTimeUTC"])],S.prototype,"readArriveTimeOffset",null),e([n({json:{name:"attributes.Bearing",read:!1,write:!0}})],S.prototype,"bearing",void 0),e([n({json:{name:"attributes.BearingTol",read:!1,write:!0}})],S.prototype,"bearingTol",void 0),e([n()],S.prototype,"cumulativeCosts",void 0),e([u("cumulativeCosts",["attributes"])],S.prototype,"readCumulativeCosts",null),e([n({json:{read:!1}})],S.prototype,"cumulativeDistance",void 0),e([n({json:{read:!1}})],S.prototype,"cumulativeDuration",void 0),e([n({type:v.apiValues,json:{name:"attributes.CurbApproach",read:{reader:v.read},write:{writer:v.write}}})],S.prototype,"curbApproach",void 0),e([n({type:v.apiValues,json:{read:{source:"attributes.DepartCurbApproach",reader:v.read}}})],S.prototype,"departCurbApproach",void 0),e([n({type:Date,json:{read:{source:"attributes.DepartTimeUTC"}}})],S.prototype,"departTime",void 0),e([n()],S.prototype,"departTimeOffset",void 0),e([u("departTimeOffset",["attributes.DepartTime","attributes.DepartTimeUTC"])],S.prototype,"readDepartTimeOffset",null),e([n({json:{read:{source:"attributes.DistanceToNetworkInMeters"}}})],S.prototype,"distanceToNetworkInMeters",void 0),e([n({type:m,json:{write:!0}})],S.prototype,"geometry",void 0),e([n({json:{name:"attributes.LateMinutes",read:!1}})],S.prototype,"lateDuration",void 0),e([n({type:h.apiValues,json:{name:"attributes.LocationType",read:{reader:h.read},write:{writer:h.write}}})],S.prototype,"locationType",void 0),e([n({json:{name:"attributes.Name",write:!0}})],S.prototype,"name",void 0),e([n({json:{read:{source:"attributes.NavLatency"}}})],S.prototype,"navLatency",void 0),e([n({json:{name:"attributes.ObjectID",write:!0}})],S.prototype,"objectId",void 0),e([n({type:t,json:{read:!1}})],S.prototype,"popupTemplate",void 0),e([n({json:{read:{source:"attributes.PosAlong"}}})],S.prototype,"posAlong",void 0),e([n({json:{name:"attributes.RouteName",write:!0}})],S.prototype,"routeName",void 0),e([n()],S.prototype,"serviceCosts",void 0),e([u("serviceCosts",["attributes"])],S.prototype,"readServiceCosts",null),e([d("serviceCosts")],S.prototype,"writeServiceCosts",null),e([n({json:{read:!1}})],S.prototype,"serviceDistance",void 0),e([n({json:{read:!1}})],S.prototype,"serviceDuration",void 0),e([n({json:{name:"attributes.Sequence",write:!0}})],S.prototype,"sequence",void 0),e([n({type:f.apiValues,json:{read:{source:"attributes.SideOfEdge",reader:f.read}}})],S.prototype,"sideOfEdge",void 0),e([n({json:{read:{source:"attributes.SnapX"}}})],S.prototype,"snapX",void 0),e([n({json:{read:{source:"attributes.SnapY"}}})],S.prototype,"snapY",void 0),e([n({json:{read:{source:"attributes.SnapZ"}}})],S.prototype,"snapZ",void 0),e([n({json:{read:{source:"attributes.SourceID"}}})],S.prototype,"sourceId",void 0),e([n({json:{read:{source:"attributes.SourceOID"}}})],S.prototype,"sourceOid",void 0),e([n({type:T.apiValues,json:{read:{source:"attributes.Status",reader:T.read}}})],S.prototype,"status",void 0),e([n({types:i,json:{read:!1}})],S.prototype,"symbol",void 0),e([n({type:Date,json:{name:"attributes.TimeWindowEnd"}})],S.prototype,"timeWindowEnd",void 0),e([d("timeWindowEnd")],S.prototype,"writeTimeWindowEnd",null),e([n({json:{read:!1}})],S.prototype,"timeWindowEndOffset",void 0),e([n({type:Date,json:{name:"attributes.TimeWindowStart"}})],S.prototype,"timeWindowStart",void 0),e([d("timeWindowStart")],S.prototype,"writeTimeWindowStart",null),e([n({json:{read:!1}})],S.prototype,"timeWindowStartOffset",void 0),e([n()],S.prototype,"violations",void 0),e([u("violations",["attributes"])],S.prototype,"readViolations",null),e([n({json:{read:!1}})],S.prototype,"waitDuration",void 0),e([n()],S.prototype,"wait",void 0),e([u("wait",["attributes"])],S.prototype,"readWait",null),S=C=e([p("esri.layers.support.Stop")],S);const O=S;export{O as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{strict as e}from"../../core/jsonMap.js";const r=e()({esriCentimeters:"centimeters",esriDecimalDegrees:"decimal-degrees",esriDecimeters:"decimeters",esriFeet:"feet",esriInches:"inches",esriKilometers:"kilometers",esriMeters:"meters",esriMiles:"miles",esriMillimeters:"millimeters",esriNauticalMiles:"nautical-miles",esriPoints:"points",esriYards:"yards"}),t=e()({esriNAUCentimeters:"centimeters",esriNAUDecimalDegrees:"decimal-degrees",esriNAUDecimeters:"decimeters",esriNAUFeet:"feet",esriNAUInches:"inches",esriNAUKilometers:"kilometers",esriNAUMeters:"meters",esriNAUMiles:"miles",esriNAUMillimeters:"millimeters",esriNAUNauticalMiles:"nautical-miles",esriNAUPoints:"points",esriNAUYards:"yards"}),i=e()({esriDOTComplete:"complete",esriDOTCompleteNoEvents:"complete-no-events",esriDOTFeatureSets:"featuresets",esriDOTInstructionsOnly:"instructions-only",esriDOTStandard:"standard",esriDOTSummaryOnly:"summary-only"}),s=e()({esriNAOutputLineNone:"none",esriNAOutputLineStraight:"straight",esriNAOutputLineTrueShape:"true-shape",esriNAOutputLineTrueShapeWithMeasure:"true-shape-with-measure"}),a=e()({esriNAOutputPolygonNone:"none",esriNAOutputPolygonSimplified:"simplified",esriNAOutputPolygonDetailed:"detailed"}),n=e()({esriNFSBAllowBacktrack:"allow-backtrack",esriNFSBAtDeadEndsOnly:"at-dead-ends-only",esriNFSBNoBacktrack:"no-backtrack",esriNFSBAtDeadEndsAndIntersections:"at-dead-ends-and-intersections"}),o=e()({esriNATravelDirectionFromFacility:"from-facility",esriNATravelDirectionToFacility:"to-facility"}),l=e()({esriNATimeOfDayNotUsed:"not-used",esriNATimeOfDayUseAsStartTime:"start",esriNATimeOfDayUseAsEndTime:"end"}),c=e()({AUTOMOBILE:"automobile",TRUCK:"truck",WALK:"walk",OTHER:"other"}),u=e()({0:"either-side-of-vehicle",1:"right-side-of-vehicle",2:"left-side-of-vehicle",3:"no-u-turn"},{useNumericKeys:!0}),m=e()({0:"stop",1:"waypoint",2:"break"},{useNumericKeys:!0}),d=e()({0:"ok",1:"not-located",2:"network-element-not-located",3:"element-not-traversable",4:"invalid-field-values",5:"not-reached",6:"time-window-violation",7:"not-located-on-closest"},{useNumericKeys:!0}),f=e()({1:"right",2:"left"},{useNumericKeys:!0}),N=e()({0:"restriction",1:"added-cost"},{useNumericKeys:!0}),h=e()({0:"permit",1:"restrict"},{useNumericKeys:!0}),p=e()({1:"header",50:"arrive",51:"depart",52:"straight",100:"on-ferry",101:"off-ferry",102:"central-fork",103:"roundabout",104:"u-turn",150:"door",151:"stairs",152:"elevator",153:"escalator",154:"pedestrian-ramp",200:"left-fork",201:"left-ramp",202:"clockwise-roundabout",203:"left-handed-u-turn",204:"bear-left",205:"left-turn",206:"sharp-left",207:"left-turn-and-immediate-left-turn",208:"left-turn-and-immediate-right-turn",300:"right-fork",301:"right-ramp",302:"counter-clockwise-roundabout",303:"right-handed-u-turn",304:"bear-right",305:"right-turn",306:"sharp-right",307:"right-turn-and-immediate-left-turn",308:"right-turn-and-immediate-right-turn",400:"up-elevator",401:"up-escalator",402:"up-stairs",500:"down-elevator",501:"down-escalator",502:"down-stairs",1e3:"general-event",1001:"landmark",1002:"time-zone-change",1003:"traffic-event",1004:"scaled-cost-barrier-event",1005:"boundary-crossing",1006:"restriction-violation"},{useNumericKeys:!0}),y=e()({0:"unknown",1:"segment",2:"maneuver-segment",3:"restriction-violation",4:"scaled-cost-barrier",5:"heavy-traffic",6:"slow-traffic",7:"moderate-traffic"},{useNumericKeys:!0});export{N as barrierTypeJsonMap,u as curbApproachJsonMap,y as directionLineTypeJsonMap,p as directionPointTypeJsonMap,t as directionsLengthUnitJsonMap,i as directionsOutputTypeJsonMap,h as fullEdgeJsonMap,r as lengthUnitJsonMap,m as locationTypeJsonMap,s as outputLineJsonMap,a as outputPolygonJsonMap,n as restrictUTurnJsonMap,f as sideOfEdgeJsonMap,d as statusJsonMap,l as timeOfDayUsageJsonMap,o as travelDirectionJsonMap,c as travelModeTypeJsonMap};
5
+ import{strict as e}from"../../core/jsonMap.js";const r=e()({esriCentimeters:"centimeters",esriDecimalDegrees:"decimal-degrees",esriDecimeters:"decimeters",esriFeet:"feet",esriInches:"inches",esriKilometers:"kilometers",esriMeters:"meters",esriMiles:"miles",esriMillimeters:"millimeters",esriNauticalMiles:"nautical-miles",esriPoints:"points",esriYards:"yards"}),t=e()({esriNAUCentimeters:"centimeters",esriNAUDecimalDegrees:"decimal-degrees",esriNAUDecimeters:"decimeters",esriNAUFeet:"feet",esriNAUInches:"inches",esriNAUKilometers:"kilometers",esriNAUMeters:"meters",esriNAUMiles:"miles",esriNAUMillimeters:"millimeters",esriNAUNauticalMiles:"nautical-miles",esriNAUPoints:"points",esriNAUYards:"yards"}),i=e()({esriNAUDays:"days",esriNAUHours:"hours",esriNAUMinutes:"minutes",esriNAUSeconds:"seconds"}),s=e()({esriDOTComplete:"complete",esriDOTCompleteNoEvents:"complete-no-events",esriDOTFeatureSets:"featuresets",esriDOTInstructionsOnly:"instructions-only",esriDOTStandard:"standard",esriDOTSummaryOnly:"summary-only"}),a=e()({esriNAOutputLineNone:"none",esriNAOutputLineStraight:"straight",esriNAOutputLineTrueShape:"true-shape",esriNAOutputLineTrueShapeWithMeasure:"true-shape-with-measure"}),n=e()({esriNAOutputPolygonNone:"none",esriNAOutputPolygonSimplified:"simplified",esriNAOutputPolygonDetailed:"detailed"}),o=e()({esriNFSBAllowBacktrack:"allow-backtrack",esriNFSBAtDeadEndsOnly:"at-dead-ends-only",esriNFSBNoBacktrack:"no-backtrack",esriNFSBAtDeadEndsAndIntersections:"at-dead-ends-and-intersections"}),l=e()({esriNATravelDirectionFromFacility:"from-facility",esriNATravelDirectionToFacility:"to-facility"}),u=e()({esriNATimeOfDayNotUsed:"not-used",esriNATimeOfDayUseAsStartTime:"start",esriNATimeOfDayUseAsEndTime:"end"}),c=e()({AUTOMOBILE:"automobile",TRUCK:"truck",WALK:"walk",OTHER:"other"}),m=e()({0:"either-side-of-vehicle",1:"right-side-of-vehicle",2:"left-side-of-vehicle",3:"no-u-turn"},{useNumericKeys:!0}),d=e()({0:"stop",1:"waypoint",2:"break"},{useNumericKeys:!0}),N=e()({0:"ok",1:"not-located",2:"network-element-not-located",3:"element-not-traversable",4:"invalid-field-values",5:"not-reached",6:"time-window-violation",7:"not-located-on-closest"},{useNumericKeys:!0}),f=e()({1:"right",2:"left"},{useNumericKeys:!0}),h=e()({0:"restriction",1:"added-cost"},{useNumericKeys:!0}),A=e()({0:"permit",1:"restrict"},{useNumericKeys:!0}),p=e()({1:"header",50:"arrive",51:"depart",52:"straight",100:"on-ferry",101:"off-ferry",102:"central-fork",103:"roundabout",104:"u-turn",150:"door",151:"stairs",152:"elevator",153:"escalator",154:"pedestrian-ramp",200:"left-fork",201:"left-ramp",202:"clockwise-roundabout",203:"left-handed-u-turn",204:"bear-left",205:"left-turn",206:"sharp-left",207:"left-turn-and-immediate-left-turn",208:"left-turn-and-immediate-right-turn",300:"right-fork",301:"right-ramp",302:"counter-clockwise-roundabout",303:"right-handed-u-turn",304:"bear-right",305:"right-turn",306:"sharp-right",307:"right-turn-and-immediate-left-turn",308:"right-turn-and-immediate-right-turn",400:"up-elevator",401:"up-escalator",402:"up-stairs",500:"down-elevator",501:"down-escalator",502:"down-stairs",1e3:"general-event",1001:"landmark",1002:"time-zone-change",1003:"traffic-event",1004:"scaled-cost-barrier-event",1005:"boundary-crossing",1006:"restriction-violation"},{useNumericKeys:!0}),y=e()({0:"unknown",1:"segment",2:"maneuver-segment",3:"restriction-violation",4:"scaled-cost-barrier",5:"heavy-traffic",6:"slow-traffic",7:"moderate-traffic"},{useNumericKeys:!0});export{h as barrierTypeJsonMap,m as curbApproachJsonMap,y as directionLineTypeJsonMap,p as directionPointTypeJsonMap,t as directionsLengthUnitJsonMap,s as directionsOutputTypeJsonMap,i as directionsTimeUnitJsonMap,A as fullEdgeJsonMap,r as lengthUnitJsonMap,d as locationTypeJsonMap,a as outputLineJsonMap,n as outputPolygonJsonMap,o as restrictUTurnJsonMap,f as sideOfEdgeJsonMap,N as statusJsonMap,u as timeOfDayUsageJsonMap,l as travelDirectionJsonMap,c as travelModeTypeJsonMap};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- const c="20220118",e="40a90c54cc23896ac97b66bfedc58e536d208407";export{c as buildDate,e as commitHash};
5
+ const e="20220126",a="441cd5ba97312ea5729deea4a664c76d0b5d34be";export{e as buildDate,a as commitHash};
package/symbols/Font.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../chunks/tslib.es6.js";import{JSONSupport as o}from"../core/JSONSupport.js";import{toPt as e}from"../core/screenUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/arrayUtils.js";import"../core/has.js";import{cast as r}from"../core/accessorSupport/decorators/cast.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{FONT_DECORATIONS as p,FONT_STYLES as a,FONT_WEIGHTS as n}from"./support/constants.js";var c;let l=c=class extends o{constructor(t){super(t),this.decoration="none",this.family="sans-serif",this.size=9,this.style="normal",this.weight="normal"}castSize(t){return e(t)}clone(){return new c({decoration:this.decoration,family:this.family,size:this.size,style:this.style,weight:this.weight})}hash(){return`${this.decoration}.${this.family}.${this.size}.${this.style}.${this.weight}`}};t([s({type:p,json:{default:"none",write:!0}})],l.prototype,"decoration",void 0),t([s({type:String,json:{write:!0}})],l.prototype,"family",void 0),t([s({type:Number,json:{write:{overridePolicy:(t,o,e)=>({enabled:!e||!e.textSymbol3D})}}})],l.prototype,"size",void 0),t([r("size")],l.prototype,"castSize",null),t([s({type:a,json:{default:"normal",write:!0}})],l.prototype,"style",void 0),t([s({type:n,json:{default:"normal",write:!0}})],l.prototype,"weight",void 0),l=c=t([i("esri.symbols.Font")],l);const m=l;export{m as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import{JSONSupport as o}from"../core/JSONSupport.js";import{toPt as e}from"../core/screenUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import"../core/arrayUtils.js";import"../core/has.js";import{cast as s}from"../core/accessorSupport/decorators/cast.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{FONT_DECORATIONS as p,FONT_STYLES as a,FONT_WEIGHTS as c}from"./support/textUtils.js";var n;let l=n=class extends o{constructor(t){super(t),this.decoration="none",this.family="sans-serif",this.size=9,this.style="normal",this.weight="normal"}castSize(t){return e(t)}clone(){return new n({decoration:this.decoration,family:this.family,size:this.size,style:this.style,weight:this.weight})}hash(){return`${this.decoration}.${this.family}.${this.size}.${this.style}.${this.weight}`}};t([r({type:p,json:{default:"none",write:!0}})],l.prototype,"decoration",void 0),t([r({type:String,json:{write:!0}})],l.prototype,"family",void 0),t([r({type:Number,json:{write:{overridePolicy:(t,o,e)=>({enabled:!e||!e.textSymbol3D})}}})],l.prototype,"size",void 0),t([s("size")],l.prototype,"castSize",null),t([r({type:a,json:{default:"normal",write:!0}})],l.prototype,"style",void 0),t([r({type:c,json:{default:"normal",write:!0}})],l.prototype,"weight",void 0),l=n=t([i("esri.symbols.Font")],l);const m=l;export{m as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../chunks/tslib.es6.js";import o from"../core/Collection.js";import{clone as r}from"../core/lang.js";import{property as e}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{enumeration as s}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import i from"./Symbol3D.js";import a from"./TextSymbol3DLayer.js";import{calloutProperty as p,hasVisibleCallout as c,hasVisibleVerticalOffset as m}from"./callouts/calloutUtils.js";import y from"./support/Symbol3DVerticalOffset.js";var n;const u=o.ofType({base:null,key:"type",typeMap:{text:a}});let f=n=class extends i{constructor(t){super(t),this.verticalOffset=null,this.callout=null,this.styleOrigin=null,this.symbolLayers=new u,this.type="label-3d"}supportsCallout(){return!0}hasVisibleCallout(){return c(this)}hasVisibleVerticalOffset(){return m(this)}clone(){return new n({styleOrigin:r(this.styleOrigin),symbolLayers:r(this.symbolLayers),thumbnail:r(this.thumbnail),callout:r(this.callout),verticalOffset:r(this.verticalOffset)})}static fromTextSymbol(t){return new n({symbolLayers:[a.fromTextSymbol(t)]})}};t([e({type:y,json:{write:!0}})],f.prototype,"verticalOffset",void 0),t([e(p)],f.prototype,"callout",void 0),t([e({json:{read:!1,write:!1}})],f.prototype,"styleOrigin",void 0),t([e({type:u})],f.prototype,"symbolLayers",void 0),t([s({LabelSymbol3D:"label-3d"},{readOnly:!0})],f.prototype,"type",void 0),f=n=t([l("esri.symbols.LabelSymbol3D")],f);const b=f;export{b as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import o from"../core/Collection.js";import{clone as r}from"../core/lang.js";import{property as e}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{enumeration as s}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import i from"./Symbol3D.js";import a from"./TextSymbol3DLayer.js";import{calloutProperty as p,hasVisibleCallout as c,hasVisibleVerticalOffset as m}from"./callouts/calloutUtils.js";import{Symbol3DVerticalOffset as y}from"./support/Symbol3DVerticalOffset.js";var n;const u=o.ofType({base:null,key:"type",typeMap:{text:a}});let f=n=class extends i{constructor(t){super(t),this.verticalOffset=null,this.callout=null,this.styleOrigin=null,this.symbolLayers=new u,this.type="label-3d"}supportsCallout(){return!0}hasVisibleCallout(){return c(this)}hasVisibleVerticalOffset(){return m(this)}clone(){return new n({styleOrigin:r(this.styleOrigin),symbolLayers:r(this.symbolLayers),thumbnail:r(this.thumbnail),callout:r(this.callout),verticalOffset:r(this.verticalOffset)})}static fromTextSymbol(t){return new n({symbolLayers:[a.fromTextSymbol(t)]})}};t([e({type:y,json:{write:!0}})],f.prototype,"verticalOffset",void 0),t([e(p)],f.prototype,"callout",void 0),t([e({json:{read:!1,write:!1}})],f.prototype,"styleOrigin",void 0),t([e({type:u})],f.prototype,"symbolLayers",void 0),t([s({LabelSymbol3D:"label-3d"},{readOnly:!0})],f.prototype,"type",void 0),f=n=t([l("esri.symbols.LabelSymbol3D")],f);const b=f;export{b as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../chunks/tslib.es6.js";import e from"../core/Collection.js";import o from"../core/Error.js";import{clone as r}from"../core/lang.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{enumeration as l}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{writer as y}from"../core/accessorSupport/decorators/writer.js";import a from"./IconSymbol3DLayer.js";import m from"./ObjectSymbol3DLayer.js";import n from"./Symbol3D.js";import c from"./TextSymbol3DLayer.js";import{calloutProperty as p,hasVisibleCallout as b,hasVisibleVerticalOffset as u}from"./callouts/calloutUtils.js";import f from"./support/Symbol3DVerticalOffset.js";var S;const h=e.ofType({base:null,key:"type",typeMap:{icon:a,object:m,text:c}}),j=e.ofType({base:null,key:"type",typeMap:{icon:a,object:m}});let d=S=class extends n{constructor(t){super(t),this.verticalOffset=null,this.callout=null,this.symbolLayers=new h,this.type="point-3d"}writeSymbolLayers(t,e,r,s){const l=t.filter((t=>"text"!==t.type));if(s&&s.messages&&l.length<t.length){const e=t.find((t=>"text"===t.type));s.messages.push(new o("symbol-layer:unsupported","Symbol layers of type 'text' cannot be persisted in PointSymbol3D",{symbolLayer:e}))}e[r]=l.map((t=>t.write({},s))).toArray()}supportsCallout(){if((this.symbolLayers?this.symbolLayers.length:0)<1)return!1;for(const t of this.symbolLayers.items)switch(t.type){case"icon":case"text":case"object":continue;default:return!1}return!0}hasVisibleCallout(){return b(this)}hasVisibleVerticalOffset(){return u(this)}clone(){return new S({verticalOffset:r(this.verticalOffset),callout:r(this.callout),styleOrigin:r(this.styleOrigin),symbolLayers:r(this.symbolLayers),thumbnail:r(this.thumbnail)})}static fromSimpleMarkerSymbol(t){return new S({symbolLayers:[a.fromSimpleMarkerSymbol(t)]})}static fromPictureMarkerSymbol(t){return new S({symbolLayers:[a.fromPictureMarkerSymbol(t)]})}static fromCIMSymbol(t){var e,o;if("CIMPointSymbol"!==(null==(e=t.data)||null==(o=e.symbol)?void 0:o.type))return null;return t.data.symbol.callout?new S({symbolLayers:[a.fromCIMSymbol(t)],callout:{type:"line",size:.5,color:[0,0,0]},verticalOffset:{screenLength:40}}):new S({symbolLayers:[a.fromCIMSymbol(t)]})}static fromTextSymbol(t){return new S({symbolLayers:[c.fromTextSymbol(t)]})}};t([s({type:f,json:{write:!0}})],d.prototype,"verticalOffset",void 0),t([s(p)],d.prototype,"callout",void 0),t([s({type:h,json:{type:j,origins:{"web-scene":{type:j}}}})],d.prototype,"symbolLayers",void 0),t([y("web-scene","symbolLayers")],d.prototype,"writeSymbolLayers",null),t([l({PointSymbol3D:"point-3d"},{readOnly:!0})],d.prototype,"type",void 0),d=S=t([i("esri.symbols.PointSymbol3D")],d);const L=d;export{L as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import e from"../core/Collection.js";import o from"../core/Error.js";import{clone as r}from"../core/lang.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{enumeration as l}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{writer as y}from"../core/accessorSupport/decorators/writer.js";import a from"./IconSymbol3DLayer.js";import m from"./ObjectSymbol3DLayer.js";import n from"./Symbol3D.js";import c from"./TextSymbol3DLayer.js";import{calloutProperty as p,hasVisibleCallout as b,hasVisibleVerticalOffset as u}from"./callouts/calloutUtils.js";import{Symbol3DVerticalOffset as f}from"./support/Symbol3DVerticalOffset.js";var S;const h=e.ofType({base:null,key:"type",typeMap:{icon:a,object:m,text:c}}),j=e.ofType({base:null,key:"type",typeMap:{icon:a,object:m}});let d=S=class extends n{constructor(t){super(t),this.verticalOffset=null,this.callout=null,this.symbolLayers=new h,this.type="point-3d"}writeSymbolLayers(t,e,r,s){const l=t.filter((t=>"text"!==t.type));if(s&&s.messages&&l.length<t.length){const e=t.find((t=>"text"===t.type));s.messages.push(new o("symbol-layer:unsupported","Symbol layers of type 'text' cannot be persisted in PointSymbol3D",{symbolLayer:e}))}e[r]=l.map((t=>t.write({},s))).toArray()}supportsCallout(){if((this.symbolLayers?this.symbolLayers.length:0)<1)return!1;for(const t of this.symbolLayers.items)switch(t.type){case"icon":case"text":case"object":continue;default:return!1}return!0}hasVisibleCallout(){return b(this)}hasVisibleVerticalOffset(){return u(this)}clone(){return new S({verticalOffset:r(this.verticalOffset),callout:r(this.callout),styleOrigin:r(this.styleOrigin),symbolLayers:r(this.symbolLayers),thumbnail:r(this.thumbnail)})}static fromSimpleMarkerSymbol(t){return new S({symbolLayers:[a.fromSimpleMarkerSymbol(t)]})}static fromPictureMarkerSymbol(t){return new S({symbolLayers:[a.fromPictureMarkerSymbol(t)]})}static fromCIMSymbol(t){var e,o;if("CIMPointSymbol"!==(null==(e=t.data)||null==(o=e.symbol)?void 0:o.type))return null;return t.data.symbol.callout?new S({symbolLayers:[a.fromCIMSymbol(t)],callout:{type:"line",size:.5,color:[0,0,0]},verticalOffset:{screenLength:40}}):new S({symbolLayers:[a.fromCIMSymbol(t)]})}static fromTextSymbol(t){return new S({symbolLayers:[c.fromTextSymbol(t)]})}};t([s({type:f,json:{write:!0}})],d.prototype,"verticalOffset",void 0),t([s(p)],d.prototype,"callout",void 0),t([s({type:h,json:{type:j,origins:{"web-scene":{type:j}}}})],d.prototype,"symbolLayers",void 0),t([y("web-scene","symbolLayers")],d.prototype,"writeSymbolLayers",null),t([l({PointSymbol3D:"point-3d"},{readOnly:!0})],d.prototype,"type",void 0),d=S=t([i("esri.symbols.PointSymbol3D")],d);const L=d;export{L as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../chunks/tslib.es6.js";import o from"../Color.js";import{clone as e}from"../core/lang.js";import{toPt as i}from"../core/screenUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as s}from"../core/accessorSupport/decorators/cast.js";import{enumeration as n}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as h}from"../core/accessorSupport/decorators/subclass.js";import{writer as l}from"../core/accessorSupport/decorators/writer.js";import p from"./Font.js";import a from"./Symbol.js";var d;let y=d=class extends a{constructor(...t){super(...t),this.backgroundColor=null,this.borderLineColor=null,this.borderLineSize=null,this.font=new p,this.horizontalAlignment="center",this.kerning=!0,this.haloColor=null,this.haloSize=null,this.rightToLeft=null,this.rotated=!1,this.text="",this.type="text",this.verticalAlignment="baseline",this.xoffset=0,this.yoffset=0,this.angle=0,this.width=null,this.lineWidth=192,this.lineHeight=1}normalizeCtorArgs(t,o,e){if(t&&"string"!=typeof t)return t;const i={};return t&&(i.text=t),o&&(i.font=o),e&&(i.color=e),i}writeLineWidth(t,o,e,i){i&&"string"!=typeof i?i.origin:o[e]=t}castLineWidth(t){return i(t)}writeLineHeight(t,o,e,i){i&&"string"!=typeof i?i.origin:o[e]=t}clone(){return new d({angle:this.angle,backgroundColor:e(this.backgroundColor),borderLineColor:e(this.borderLineColor),borderLineSize:this.borderLineSize,color:e(this.color),font:this.font&&this.font.clone(),haloColor:e(this.haloColor),haloSize:this.haloSize,horizontalAlignment:this.horizontalAlignment,kerning:this.kerning,lineHeight:this.lineHeight,lineWidth:this.lineWidth,rightToLeft:this.rightToLeft,rotated:this.rotated,text:this.text,verticalAlignment:this.verticalAlignment,width:this.width,xoffset:this.xoffset,yoffset:this.yoffset})}hash(){return`${this.backgroundColor&&this.backgroundColor.hash()}.${this.borderLineColor}.${this.borderLineSize}.${this.color.hash()}.${this.font&&this.font.hash()}.${this.haloColor&&this.haloColor.hash()}.${this.haloSize}.${this.horizontalAlignment}.${this.kerning}.${this.rightToLeft}.${this.rotated}.${this.text}.${this.verticalAlignment}.${this.width}.${this.xoffset}.${this.yoffset}.${this.lineHeight}.${this.lineWidth}.${this.angle}`}};t([r({type:o,json:{write:!0}})],y.prototype,"backgroundColor",void 0),t([r({type:o,json:{write:!0}})],y.prototype,"borderLineColor",void 0),t([r({type:Number,json:{write:!0}})],y.prototype,"borderLineSize",void 0),t([r({type:p,json:{write:!0}})],y.prototype,"font",void 0),t([r({type:["left","right","center","justify"],json:{write:!0}})],y.prototype,"horizontalAlignment",void 0),t([r({type:Boolean,json:{write:!0}})],y.prototype,"kerning",void 0),t([r({type:o,json:{write:!0}})],y.prototype,"haloColor",void 0),t([r({type:Number,cast:i,json:{write:!0}})],y.prototype,"haloSize",void 0),t([r({type:Boolean,json:{write:!0}})],y.prototype,"rightToLeft",void 0),t([r({type:Boolean,json:{write:!0}})],y.prototype,"rotated",void 0),t([r({type:String,json:{write:!0}})],y.prototype,"text",void 0),t([n({esriTS:"text"},{readOnly:!0})],y.prototype,"type",void 0),t([r({type:["baseline","top","middle","bottom"],json:{write:!0}})],y.prototype,"verticalAlignment",void 0),t([r({type:Number,cast:i,json:{write:!0}})],y.prototype,"xoffset",void 0),t([r({type:Number,cast:i,json:{write:!0}})],y.prototype,"yoffset",void 0),t([r({type:Number,json:{read:t=>t&&-1*t,write:(t,o)=>o.angle=t&&-1*t}})],y.prototype,"angle",void 0),t([r({type:Number,json:{write:!0}})],y.prototype,"width",void 0),t([r({type:Number})],y.prototype,"lineWidth",void 0),t([l("lineWidth")],y.prototype,"writeLineWidth",null),t([s("lineWidth")],y.prototype,"castLineWidth",null),t([r({type:Number})],y.prototype,"lineHeight",void 0),t([l("lineHeight")],y.prototype,"writeLineHeight",null),y=d=t([h("esri.symbols.TextSymbol")],y);const c=y;export{c as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import o from"../Color.js";import{clone as e}from"../core/lang.js";import{toPt as i}from"../core/screenUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as s}from"../core/accessorSupport/decorators/cast.js";import{enumeration as n}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as h}from"../core/accessorSupport/decorators/subclass.js";import{writer as l}from"../core/accessorSupport/decorators/writer.js";import p from"./Font.js";import a from"./Symbol.js";import{lineHeightProperty as d}from"./support/textUtils.js";var c;let y=c=class extends a{constructor(...t){super(...t),this.backgroundColor=null,this.borderLineColor=null,this.borderLineSize=null,this.font=new p,this.horizontalAlignment="center",this.kerning=!0,this.haloColor=null,this.haloSize=null,this.rightToLeft=null,this.rotated=!1,this.text="",this.type="text",this.verticalAlignment="baseline",this.xoffset=0,this.yoffset=0,this.angle=0,this.width=null,this.lineWidth=192,this.lineHeight=1}normalizeCtorArgs(t,o,e){if(t&&"string"!=typeof t)return t;const i={};return t&&(i.text=t),o&&(i.font=o),e&&(i.color=e),i}writeLineWidth(t,o,e,i){i&&"string"!=typeof i?i.origin:o[e]=t}castLineWidth(t){return i(t)}writeLineHeight(t,o,e,i){i&&"string"!=typeof i?i.origin:o[e]=t}clone(){return new c({angle:this.angle,backgroundColor:e(this.backgroundColor),borderLineColor:e(this.borderLineColor),borderLineSize:this.borderLineSize,color:e(this.color),font:this.font&&this.font.clone(),haloColor:e(this.haloColor),haloSize:this.haloSize,horizontalAlignment:this.horizontalAlignment,kerning:this.kerning,lineHeight:this.lineHeight,lineWidth:this.lineWidth,rightToLeft:this.rightToLeft,rotated:this.rotated,text:this.text,verticalAlignment:this.verticalAlignment,width:this.width,xoffset:this.xoffset,yoffset:this.yoffset})}hash(){return`${this.backgroundColor&&this.backgroundColor.hash()}.${this.borderLineColor}.${this.borderLineSize}.${this.color.hash()}.${this.font&&this.font.hash()}.${this.haloColor&&this.haloColor.hash()}.${this.haloSize}.${this.horizontalAlignment}.${this.kerning}.${this.rightToLeft}.${this.rotated}.${this.text}.${this.verticalAlignment}.${this.width}.${this.xoffset}.${this.yoffset}.${this.lineHeight}.${this.lineWidth}.${this.angle}`}};t([r({type:o,json:{write:!0}})],y.prototype,"backgroundColor",void 0),t([r({type:o,json:{write:!0}})],y.prototype,"borderLineColor",void 0),t([r({type:Number,json:{write:!0}})],y.prototype,"borderLineSize",void 0),t([r({type:p,json:{write:!0}})],y.prototype,"font",void 0),t([r({type:["left","right","center","justify"],json:{write:!0}})],y.prototype,"horizontalAlignment",void 0),t([r({type:Boolean,json:{write:!0}})],y.prototype,"kerning",void 0),t([r({type:o,json:{write:!0}})],y.prototype,"haloColor",void 0),t([r({type:Number,cast:i,json:{write:!0}})],y.prototype,"haloSize",void 0),t([r({type:Boolean,json:{write:!0}})],y.prototype,"rightToLeft",void 0),t([r({type:Boolean,json:{write:!0}})],y.prototype,"rotated",void 0),t([r({type:String,json:{write:!0}})],y.prototype,"text",void 0),t([n({esriTS:"text"},{readOnly:!0})],y.prototype,"type",void 0),t([r({type:["baseline","top","middle","bottom"],json:{write:!0}})],y.prototype,"verticalAlignment",void 0),t([r({type:Number,cast:i,json:{write:!0}})],y.prototype,"xoffset",void 0),t([r({type:Number,cast:i,json:{write:!0}})],y.prototype,"yoffset",void 0),t([r({type:Number,json:{read:t=>t&&-1*t,write:(t,o)=>o.angle=t&&-1*t}})],y.prototype,"angle",void 0),t([r({type:Number,json:{write:!0}})],y.prototype,"width",void 0),t([r({type:Number})],y.prototype,"lineWidth",void 0),t([l("lineWidth")],y.prototype,"writeLineWidth",null),t([s("lineWidth")],y.prototype,"castLineWidth",null),t([r(d)],y.prototype,"lineHeight",void 0),t([l("lineHeight")],y.prototype,"writeLineHeight",null),y=c=t([h("esri.symbols.TextSymbol")],y);const f=y;export{f as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../chunks/tslib.es6.js";import{clone as o}from"../core/lang.js";import{isSome as e}from"../core/maybe.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{enumeration as i}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as s}from"../core/accessorSupport/decorators/subclass.js";import{writer as n}from"../core/accessorSupport/decorators/writer.js";import l from"./Font.js";import a from"./Symbol3DLayer.js";import{screenSizeProperty as p}from"./support/materialUtils.js";import{Symbol3DHalo as m}from"./support/Symbol3DHalo.js";import{Symbol3DMaterial as h}from"./support/Symbol3DMaterial.js";var c;let u=c=class extends a{constructor(t){super(t),this._userSize=void 0,this.halo=null,this.horizontalAlignment="center",this.material=null,this.text=null,this.type="text",this.verticalAlignment="middle"}get font(){return this._get("font")||null}set font(t){e(t)&&e(this._userSize)&&(t.size=this._userSize),this._set("font",t)}writeFont(t,o,e,r){const i={...r,textSymbol3D:!0};o.font=t.write({},i),delete o.font.size}get size(){return e(this._userSize)?this._userSize:e(this.font)&&null!=this.font.size?this.font.size:9}set size(t){this._userSize=t,e(this.font)&&(this.font.size=this._userSize),this.notifyChange("size")}clone(){return new c({enabled:this.enabled,font:this.font&&o(this.font),halo:this.halo&&o(this.halo),horizontalAlignment:this.horizontalAlignment,material:e(this.material)?this.material.clone():null,size:this.size,text:this.text,verticalAlignment:this.verticalAlignment})}static fromTextSymbol(t){return new c({font:e(t.font)?t.font.clone():new l,halo:f(t.haloColor,t.haloSize),horizontalAlignment:t.horizontalAlignment,material:t.color?{color:t.color.clone()}:null,text:t.text,verticalAlignment:t.verticalAlignment})}};function f(t,e){return t&&e>0?{color:o(t),size:e}:null}t([r({type:l,json:{write:!0}})],u.prototype,"font",null),t([n("font")],u.prototype,"writeFont",null),t([r({type:m,json:{write:!0}})],u.prototype,"halo",void 0),t([r()],u.prototype,"horizontalAlignment",void 0),t([r({type:h,json:{write:!0}})],u.prototype,"material",void 0),t([r(p)],u.prototype,"size",null),t([r({type:String,json:{write:!0}})],u.prototype,"text",void 0),t([i({Text:"text"},{readOnly:!0})],u.prototype,"type",void 0),t([r()],u.prototype,"verticalAlignment",void 0),u=c=t([s("esri.symbols.TextSymbol3DLayer")],u);const y=u;export{y as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import{clone as e}from"../core/lang.js";import{isSome as o}from"../core/maybe.js";import{property as i}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{enumeration as r}from"../core/accessorSupport/decorators/enumeration.js";import{subclass as s}from"../core/accessorSupport/decorators/subclass.js";import{writer as n}from"../core/accessorSupport/decorators/writer.js";import l from"./Font.js";import p from"./Symbol3DLayer.js";import{screenSizeProperty as a}from"./support/materialUtils.js";import{Symbol3DHalo as m}from"./support/Symbol3DHalo.js";import{Symbol3DMaterial as h}from"./support/Symbol3DMaterial.js";import{lineHeightProperty as c}from"./support/textUtils.js";var u;let f=u=class extends p{constructor(t){super(t),this._userSize=void 0,this.halo=null,this.horizontalAlignment="center",this.lineHeight=1,this.material=null,this.text=null,this.type="text",this.verticalAlignment="middle"}get font(){return this._get("font")||null}set font(t){o(t)&&o(this._userSize)&&(t.size=this._userSize),this._set("font",t)}writeFont(t,e,o,i){const r={...i,textSymbol3D:!0};e.font=t.write({},r),delete e.font.size}get size(){return o(this._userSize)?this._userSize:o(this.font)&&null!=this.font.size?this.font.size:9}set size(t){this._userSize=t,o(this.font)&&(this.font.size=this._userSize),this.notifyChange("size")}clone(){return new u({enabled:this.enabled,font:this.font&&e(this.font),halo:this.halo&&e(this.halo),horizontalAlignment:this.horizontalAlignment,lineHeight:this.lineHeight,material:o(this.material)?this.material.clone():null,size:this.size,text:this.text,verticalAlignment:this.verticalAlignment})}static fromTextSymbol(t){return new u({font:o(t.font)?t.font.clone():new l,halo:y(t.haloColor,t.haloSize),horizontalAlignment:t.horizontalAlignment,lineHeight:t.lineHeight,material:t.color?{color:t.color.clone()}:null,text:t.text,verticalAlignment:t.verticalAlignment})}};function y(t,o){return t&&o>0?{color:e(t),size:o}:null}t([i({type:l,json:{write:!0}})],f.prototype,"font",null),t([n("font")],f.prototype,"writeFont",null),t([i({type:m,json:{write:!0}})],f.prototype,"halo",void 0),t([i()],f.prototype,"horizontalAlignment",void 0),t([i(c)],f.prototype,"lineHeight",void 0),t([i({type:h,json:{write:!0}})],f.prototype,"material",void 0),t([i(a)],f.prototype,"size",null),t([i({type:String,json:{write:!0}})],f.prototype,"text",void 0),t([r({Text:"text"},{readOnly:!0})],f.prototype,"type",void 0),t([i()],f.prototype,"verticalAlignment",void 0),f=u=t([s("esri.symbols.TextSymbol3DLayer")],f);const z=f;export{z as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import{bidiText as t}from"../../core/BidiText.js";import{packFloatRGBA as r}from"../../core/floatRGBA.js";import{clone as o}from"../../core/lang.js";import i from"../../core/Logger.js";import{nextPowerOfTwo as a}from"../../core/mathUtils.js";import{isSome as s}from"../../core/maybe.js";import{pt2px as n,px2pt as l}from"../../core/screenUtils.js";import{create as c,expandPointInPlace as m}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as f}from"../../geometry/support/boundsUtils.js";import{Placement as y}from"./CIMPlacements.js";import{lineGapType2LineHeight as h,horizontalAlignment2HAlign as u,verticalAlignment2VAlign as p,EnvDrawHelper as S,Transformation as M,CanvasDrawHelper as d}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as b,LineJoinStyle as g,BlockProgression as C,FontEffects as I,FontEncoding as k,FontType as x,GlyphHinting as w,TextReadingDirection as P,VerticalGlyphOrientation as L,BillBoardMode as v,TextureFilter as F,ExtremityPlacement as T}from"./enums.js";import{getValue as z}from"./utils.js";import{C_INFINITY as D}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as G,MAGIC_LABEL_LINE_HEIGHT as A}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as N}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";const E=Math.PI,O=E/2,R=4,j=10,V=96/72,B=Math.PI/180,X=i.getLogger("esri.symbols.cim.CIMSymbolHelper");function Y(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":t=$.fromSimpleMarker(e);break;case"picture-marker":t=$.fromPictureMarker(e);break;case"simple-line":t=$.fromSimpleLineSymbol(e);break;case"simple-fill":t=$.fromSimpleFillSymbol(e);break;case"picture-fill":t=$.fromPictureFillSymbol(e);break;case"text":t=$.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function U(e,t){switch(t.type){case"CIMSymbolReference":return U(e,t.symbol);case"CIMPointSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMLineSymbol":{const r={paths:[[[0,0],[0,1]]]};e.drawSymbol(t,r);break}case"CIMPolygonSymbol":{const r={rings:[[[0,0],[0,1],[0,0]]]};e.drawSymbol(t,r);break}case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new y;e.drawMarker(t,r);break}}return e.envelope()}function _(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function H(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(z(e.offsetX)),Math.abs(z(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude)}}function q(e){if(!e)return 0;let t=0;for(const r of e)t+=H(r);return t}class W{getSymbolInflateSize(e,t,r,o,i){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,o,i):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,o){let i=!0;const a=c();if(t&&t.markerGraphics)for(const s of t.markerGraphics){const t=[0,0,0,0];s.geometry&&(f(a,s.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,s.symbol,r,0,o),a[0]+=t[0],a[1]+=t[1],a[2]+=t[2],a[3]+=t[3],i?(e[0]=a[0],e[1]=a[1],e[2]=a[2],e[3]=a[3],i=!1):(e[0]=Math.min(e[0],a[0]),e[1]=Math.min(e[1],a[1]),e[2]=Math.max(e[2],a[2]),e[3]=Math.max(e[3],a[3])))}return e}_getInflateSize(e,t,r,o,i){if(ne(t)){const a=this._getLayersInflateSize(e,t.symbolLayers,r,o,i),s=q(t.effects);return s>0&&(a[0]-=s,a[1]-=s,a[2]+=s,a[3]+=s),a}return this._getTextInflatedSize(e,t,i)}_getLayersInflateSize(e,t,r,o,i){let a=!0;if(!t)return e;for(const n of t){if(!n)continue;let t=[0,0,0,0];switch(n.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=n;let r=e.width;e.capStyle===b.Square||e.joinStyle===g.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r;break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=n;if("CIMVectorMarker"===n.type){const e=n;if(t=this._vectorMarkerBounds(t,e,r,i),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,o=(e.frame.ymin+e.frame.ymax)/2;t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o;const i=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=i,t[1]*=i,t[2]*=i,t[3]*=i}}else if("CIMPictureMarker"===n.type){const o=n,i=r.getResource(o.url);let a=1;s(i)&&i.height&&(a=i.width/i.height);const l=e.size/2,c=e.size*a*o.scaleX/2;t=[-c,-l,c,l]}else{const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,o;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,o=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),o=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o}let a=z(e.rotation);if(e.rotateClockwise&&(a=-a),o&&(a-=o),a){const e=B*a,r=Math.cos(e),o=Math.sin(e),i=c([D,D,-D,-D]);m(i,[t[0]*r-t[1]*o,t[0]*o+t[1]*r]),m(i,[t[0]*r-t[3]*o,t[0]*o+t[3]*r]),m(i,[t[2]*r-t[1]*o,t[2]*o+t[1]*r]),m(i,[t[2]*r-t[3]*o,t[2]*o+t[3]*r]),t=i}let l=z(e.offsetX),f=z(e.offsetY);if(o){const e=B*o,t=Math.cos(e),r=Math.sin(e),i=l*r+f*t;l=l*t-f*r,f=i}t[0]+=l,t[1]+=f,t[2]+=l,t[3]+=f;const y=_(e.markerPlacement);y>0&&(t[0]-=y,t[1]-=y,t[2]+=y,t[3]+=y);break}}const l=q(n.effects);l>0&&(t[0]-=l,t[1]-=l,t[2]+=l,t[3]+=l),a?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],a=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,o){var i,a;const s=null!=(i=r.height)?i:j;if(e[0]=-s/2,e[1]=-s/2,e[2]=s/2,e[3]=s/2,!o)return e;const n=o.get(r);if(!n)return e;const{text:l,mosaicItem:c}=n;if(!c||0===c.glyphMosaicItems.length)return e;const m=h(r.lineGapType,null!=(a=r.lineGap)?a:0,s),f=t(l)[1],y=c.glyphMosaicItems,S=N(y,f,{scale:s/G,angle:z(r.angle),xOffset:z(r.offsetX),yOffset:z(r.offsetY),hAlign:u(r.horizontalAlignment),vAlign:p(r.verticalAlignment),maxLineWidth:512,lineHeight:A*Math.max(.25,Math.min(m||1,4)),decoration:r.font.decoration||"none",isCIM:!0}).boundsT;return e[0]=S.x-S.halfWidth,e[1]=-S.y-S.halfHeight,e[2]=S.x+S.halfWidth,e[3]=-S.y+S.halfHeight,e}}class ${static getEnvelope(e,t){const r=new S(t);if(Array.isArray(e)){let t;for(const o of e)t?t.union(U(r,o)):t=U(r,o);return t}return U(r,e)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,t);if(!r)return[0,0,0];const o=(r.x+.5*r.width)*V,i=-(r.y+.5*r.height)*V,a=r.width*V+2,s=r.height*V+2;return[o/a,i/s,s]}static rasterize(e,t,r,o,i=!0){const a=r||this.getEnvelope(t,o);if(!a)return[null,0,0,0,0];const s=(a.x+.5*a.width)*V,n=(a.y+.5*a.height)*V;e.width=a.width*V,e.height=a.height*V,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=M.createScale(V,-V);c.translate(.5*e.width-s,.5*e.height+n);const m=new d(l,o,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};m.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new y;m.drawMarker(t,e);break}}const f=l.getImageData(0,0,e.width,e.height),h=new Uint8Array(f.data);if(i){let e;for(let t=0;t<h.length;t+=4)e=h[t+3]/255,h[t]=h[t]*e,h[t+1]=h[t+1]*e,h[t+2]=h[t+2]*e}return[h,e.width,e.height,-s/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:o,font:i,haloColor:a,haloSize:s,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:m,xoffset:f,yoffset:y}=e;let h,u,p,S,M;i&&(h=i.family,u=i.style,p=i.weight,S=i.size,M=i.decoration);let d=!1;if(c){d=t(c)[1]}return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:C.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:I.Normal,fontEncoding:k.Unicode,fontFamilyName:h||"Arial",fontStyleName:oe(u,p),fontType:x.Unspecified,haloSize:s,height:S,hinting:w.Default,horizontalAlignment:ee(null!=n?n:"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:z(f),offsetY:z(y),strikethrough:"line-through"===M,underline:"underline"===M,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:re(o)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:re(a)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:d?P.RTL:P.LTR,verticalAlignment:te(null!=m?m:"baseline"),verticalGlyphOrientation:L.Right,wordSpacing:100,billboardMode3D:v.FaceNearPlane},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:o,xoffset:i,xscale:a,yoffset:s,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const{cap:e,join:t,miterLimit:o,width:i}=r;l.push({type:"CIMSolidStroke",color:re(r.color),capStyle:Q(e),joinStyle:Z(t),miterLimit:o,width:i})}let m=e.url;"esriPFS"===e.type&&e.imageData&&(m=e.imageData);const f="angle"in e?e.angle:0,y=o*(a||1),h=t*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:F.Picture,tintColor:null,url:m,height:h,width:y,offsetX:z(i),offsetY:z(s),rotation:z(-f),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:r,outline:i}=e,s=[],n={type:"CIMPolygonSymbol",symbolLayers:s};let l=null;if(i){const{cap:e,join:t,style:r}=i;"solid"!==r&&"none"!==r&&"esriSLSSolid"!==r&&"esriSLSNull"!==r&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:se(r,e),lineDashEnding:"NoConstraint",scaleDash:!0}]),s.push({type:"CIMSolidStroke",color:re(i.color),capStyle:Q(e),joinStyle:Z(t),miterLimit:i.miterLimit,width:i.width,effects:l})}if(r&&"solid"!==r&&"none"!==r&&"esriSFSSolid"!==r&&"esriSFSNull"!==r){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:re(t),capStyle:b.Butt,joinStyle:g.Miter,width:.75}]};let i=0;const n=a(Math.ceil(window.devicePixelRatio)),l=ce(r)?8*n:10*n;switch(r){case"vertical":case"esriSFSVertical":i=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":i=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":i=45;break;case"cross":case"esriSFSCross":i=0}s.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:i,separation:l}),"cross"===r||"esriSFSCross"===r?s.push({type:"CIMHatchFill",lineSymbol:o(e),offsetX:0,offsetY:0,rotation:90,separation:l}):"diagonal-cross"!==r&&"esriSFSDiagonalCross"!==r||s.push({type:"CIMHatchFill",lineSymbol:o(e),offsetX:0,offsetY:0,rotation:45,separation:l})}else!r||"solid"!==r&&"esriSFSSolid"!==r||s.push({type:"CIMSolidFill",enable:!0,color:re(t)});return n}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:o,marker:i,miterLimit:a,style:s,width:n}=e;let l=null;"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:se(s,t),lineDashEnding:"NoConstraint",scaleDash:!0}]);const c=[];if(i){let e;switch(i.placement){case"begin-end":e=T.Both;break;case"begin":e=T.JustBegin;break;case"end":e=T.JustEnd;break;default:e=T.None}const t=$.fromSimpleMarker(i,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return"none"!==s&&"esriSLSNull"!==s&&c.push({type:"CIMSolidStroke",color:re(r),capStyle:Q(t),joinStyle:Z(o),miterLimit:a,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:o,xoffset:i,yoffset:a}=e;let s=e.url;return"esriPMS"===e.type&&e.imageData&&(s=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:F.Picture,tintColor:null,url:s,size:r,width:o,offsetX:z(i),offsetY:z(a),rotation:z(-t)}]}}static fromSimpleMarker(e,t,r){var o;const{style:i}=e,a=null!=(o=e.color)?o:r;if("path"===i){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:n(Math.round(l(r.width))),color:re(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:re(a),path:e.path});const[r,o]=le("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:o,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[s,c]=le(i);let m;if(c&&s){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:n(Math.round(l(t.width))),color:re(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:re(a)});r.push({type:"CIMSolidFill",enable:!0,color:re(a)});const o={type:"CIMPolygonSymbol",symbolLayers:r};m={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6*t),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:s,markerGraphics:[{type:"CIMMarkerGraphic",geometry:c,symbol:o}]}]}}return m}static fromCIMHatchFill(e){var t;const r=null!=(t=e.separation)?t:R,o=r/2,i=4;let a=this._getLineSymbolPeriod(e.lineSymbol)||i;for(;a<i;)a*=2;const s=a/2;return{type:"CIMVectorMarker",frame:{xmin:-s,xmax:s,ymin:-o,ymax:o},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-s,0],[s,0]]]},symbol:e.lineSymbol}],size:r}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers){const e=this._getEffectsRepeat(r.effects);if(e)return e;if(r){const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:X.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={type:e.type,...e};let o,i,a,s;if(r.markerPlacement=null,r.anchorPoint=null,!0===t.shiftOddRows){i=t.stepX/2,a=t.stepY,s=2*t.stepY;o=[{x:-i,y:0},{x:i,y:0},{x:0,y:a},{x:0,y:-a}].map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}})))}else i=t.stepX/2,a=t.stepY/2,s=t.stepY,o=[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}];return{type:"CIMVectorMarker",frame:{xmin:-i,xmax:i,ymin:-a,ymax:a},markerGraphics:o,size:s}}static getFillColor(e){if(!e)return null;switch(e.type){case"CIMPolygonSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=$.getFillColor(t);if(null!=e)return e}break;case"CIMTextSymbol":return $.getFillColor(e.symbol);case"CIMSolidFill":return e.color}}static getStrokeColor(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=$.getStrokeColor(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return $.getStrokeColor(e.symbol);case"CIMSolidStroke":return e.color}}static getStrokeWidth(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=$.getStrokeWidth(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return $.getStrokeWidth(e.symbol);case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return e.width}}static getSize(e){if(e)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers){const e=$.getSize(r);e>t&&(t=e)}return t}case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":return e.width;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":return e.size}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class J{static rasterizeSimpleFill(e,t,r){"solid"!==t&&"none"!==t&&"esriSFSSolid"!==t&&"esriSFSNull"!==t||console.error("Unexpected: style does not require rasterization");const o=a(Math.ceil(r)),i=ce(t)?8*o:16*o,s=2*o;e.width=i,e.height=i;const n=e.getContext("2d");n.strokeStyle="#FFFFFF",n.lineWidth=o,n.beginPath(),"vertical"!==t&&"cross"!==t&&"esriSFSCross"!==t&&"esriSFSVertical"!==t||(n.moveTo(i/2,-s),n.lineTo(i/2,i+s)),"horizontal"!==t&&"cross"!==t&&"esriSFSCross"!==t&&"esriSFSHorizontal"!==t||(n.moveTo(-s,i/2),n.lineTo(i+s,i/2)),"forward-diagonal"!==t&&"diagonal-cross"!==t&&"esriSFSDiagonalCross"!==t&&"esriSFSForwardDiagonal"!==t||(n.moveTo(-s,-s),n.lineTo(i+s,i+s),n.moveTo(i-s,-s),n.lineTo(i+s,s),n.moveTo(-s,i-s),n.lineTo(s,i+s)),"backward-diagonal"!==t&&"diagonal-cross"!==t&&"esriSFSBackwardDiagonal"!==t&&"esriSFSDiagonalCross"!==t||(n.moveTo(i+s,-s),n.lineTo(-s,i+s),n.moveTo(s,-s),n.lineTo(-s,s),n.moveTo(i+s,i-s),n.lineTo(i-s,i+s)),n.stroke();const l=n.getImageData(0,0,e.width,e.height),c=new Uint8Array(l.data);let m;for(let a=0;a<c.length;a+=4)m=c[a+3]/255,c[a]=c[a]*m,c[a+1]=c[a+1]*m,c[a+2]=c[a+2]*m;return[c,e.width,e.height]}static rasterizeSimpleLine(e,t){return this.rasterizeDash(e,t)}static rasterizeDash(e,t){const o="Butt"===t,i="Square"===t,a=!o&&!i;e.length%2==1&&(e=[...e,...e]);const s=15.5,n=2*s;let l=0;for(const r of e)l+=r;const c=Math.round(l*s),m=new Float32Array(c*n),f=.5*s;let y=0,h=0,u=.5,p=!0;for(const r of e){for(y=h,h+=r*s;u<=h;){let e=.5;for(;e<n;){const t=(e-.5)*c+u-.5,r=a?(e-s)*(e-s):Math.abs(e-s);m[t]=p?o?Math.max(Math.max(y+f-u,r),Math.max(u-h+f,r)):r:a?Math.min((u-y)*(u-y)+r,(u-h)*(u-h)+r):i?Math.min(Math.max(u-y,r),Math.max(h-u,r)):Math.min(Math.max(u-y+f,r),Math.max(h+f-u,r)),e++}u++}p=!p}const S=m.length,M=new Uint8Array(4*S);for(let d=0;d<S;++d){const e=(a?Math.sqrt(m[d]):m[d])/s;r(e,M,4*d)}return[M,c,n]}}class K{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let o=!1;for(const t of r)if(t.primitiveName===e.primitiveName){o=!0;break}if(!o)for(const i of t)i.primitiveName===e.primitiveName&&r.push(i)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)K.findApplicableOverrides(o,t,r);if(e.symbolLayers)for(const o of e.symbolLayers)K.findApplicableOverrides(o,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const o of e.effects)K.findApplicableOverrides(o,t,r);if(e.markerPlacement&&K.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const o of e.markerGraphics)K.findApplicableOverrides(o,t,r),K.findApplicableOverrides(o.symbol,t,r)}else"CIMCharacterMarker"===e.type?K.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type&&K.findApplicableOverrides(e.lineSymbol,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const o=e.length;for(let i=0;i<o;i++){const o=e[i],a=null==o?void 0:o.primitiveName;if(a){let e=!1;for(const t of r)if(t.primitiveName===a){e=!0;break}if(!e)for(const o of t)o.primitiveName===a&&r.push(o)}}}static applyOverrides(e,t,r,o){if(!t)return;const i=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;if(e.primitiveName)for(const a of t)if(a.primitiveName===e.primitiveName){const t=i(a.propertyName);if(o&&o.push({cim:e,nocapPropertyName:t,value:e[t]}),a.expression&&(a.value=K.toValue(a.propertyName,a.expression)),r){let t=!1;for(const o of r)o.primitiveName===e.primitiveName&&(t=!0);t||r.push(a)}e[t]=a.value}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const i of e.effects)K.applyOverrides(i,t,r,o);if(e.symbolLayers)for(const i of e.symbolLayers)K.applyOverrides(i,t,r,o);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const i of e.effects)K.applyOverrides(i,t,r,o);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const i of e.markerGraphics)K.applyOverrides(i,t,r,o),K.applyOverrides(i.symbol,t,r,o)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const Q=e=>{if(!e)return b.Butt;switch(e){case"butt":return b.Butt;case"square":return b.Square;case"round":return b.Round}},Z=e=>{if(!e)return g.Miter;switch(e){case"miter":return g.Miter;case"round":return g.Round;case"bevel":return g.Bevel}},ee=e=>{if(!e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center";case"justify":return"Justify"}},te=e=>{if(!e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},re=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:o,a:i}=e;return[t,r,o,255*i]},oe=(e,t)=>{const r=ie(t),o=ae(e);return r&&o?`${r}-${o}`:`${r}${o}`},ie=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},ae=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},se=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return X.error("Unexpected: style does not require rasterization"),[0,0];default:return X.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function ne(e){return void 0!==e.symbolLayers}const le=e=>{const t=100,r=50;let o,i;const a=e;if("circle"===a||"esriSMSCircle"===a){const e=.25;let t=Math.acos(1-e/r),a=Math.ceil(E/t/4);0===a&&(a=1),t=O/a,a*=4;const s=[];s.push([r,0]);for(let o=1;o<a;o++)s.push([r*Math.cos(o*t),-r*Math.sin(o*t)]);s.push([r,0]),o={rings:[s]},i={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===a||"esriSMSCross"===a){const e=0;o={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===a||"esriSMSDiamond"===a)o={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===a||"esriSMSSquare"===a)o={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===a||"esriSMSX"===a){const e=0;o={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===a||"esriSMSTriangle"===a){const e=t*.5773502691896257,r=-e,a=2/3*t,s=a-t;o={rings:[[[r,s],[0,a],[e,s],[r,s]]]},i={xmin:r,ymin:s,xmax:e,ymax:a}}else"arrow"===a&&(o={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r});return[i,o]},ce=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e;export{W as CIMSimbolInflatedSizeHelper,$ as CIMSymbolHelper,K as OverrideHelper,J as SymbolHelper,se as slsDashToTemplateArray,Y as symbolToCIM};
5
+ import e from"../../Color.js";import{bidiText as t}from"../../core/BidiText.js";import{packFloatRGBA as r}from"../../core/floatRGBA.js";import{clone as o}from"../../core/lang.js";import i from"../../core/Logger.js";import{nextPowerOfTwo as a}from"../../core/mathUtils.js";import{isSome as s}from"../../core/maybe.js";import{pt2px as n,px2pt as l}from"../../core/screenUtils.js";import{create as c,expandPointInPlace as m}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as f}from"../../geometry/support/boundsUtils.js";import{Placement as y}from"./CIMPlacements.js";import{lineGapType2LineHeight as h,horizontalAlignment2HAlign as u,verticalAlignment2VAlign as p,EnvDrawHelper as S,Transformation as M,CanvasDrawHelper as d}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as b,LineJoinStyle as g,BlockProgression as C,FontEffects as I,FontEncoding as k,FontType as x,GlyphHinting as w,TextReadingDirection as P,VerticalGlyphOrientation as L,BillBoardMode as v,TextureFilter as F,ExtremityPlacement as T}from"./enums.js";import{getValue as z}from"./utils.js";import{C_INFINITY as D}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as G,MAGIC_LABEL_LINE_HEIGHT as A}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as N}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";const E=Math.PI,O=E/2,R=4,j=10,V=96/72,B=Math.PI/180,X=i.getLogger("esri.symbols.cim.CIMSymbolHelper");function Y(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":t=$.fromSimpleMarker(e);break;case"picture-marker":t=$.fromPictureMarker(e);break;case"simple-line":t=$.fromSimpleLineSymbol(e);break;case"simple-fill":t=$.fromSimpleFillSymbol(e);break;case"picture-fill":t=$.fromPictureFillSymbol(e);break;case"text":t=$.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function U(e,t){switch(t.type){case"CIMSymbolReference":return U(e,t.symbol);case"CIMPointSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMLineSymbol":{const r={paths:[[[0,0],[0,1]]]};e.drawSymbol(t,r);break}case"CIMPolygonSymbol":{const r={rings:[[[0,0],[0,1],[0,0]]]};e.drawSymbol(t,r);break}case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new y;e.drawMarker(t,r);break}}return e.envelope()}function _(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function H(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(z(e.offsetX)),Math.abs(z(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude)}}function q(e){if(!e)return 0;let t=0;for(const r of e)t+=H(r);return t}class W{getSymbolInflateSize(e,t,r,o,i){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,o,i):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,o){let i=!0;const a=c();if(t&&t.markerGraphics)for(const s of t.markerGraphics){const t=[0,0,0,0];s.geometry&&(f(a,s.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,s.symbol,r,0,o),a[0]+=t[0],a[1]+=t[1],a[2]+=t[2],a[3]+=t[3],i?(e[0]=a[0],e[1]=a[1],e[2]=a[2],e[3]=a[3],i=!1):(e[0]=Math.min(e[0],a[0]),e[1]=Math.min(e[1],a[1]),e[2]=Math.max(e[2],a[2]),e[3]=Math.max(e[3],a[3])))}return e}_getInflateSize(e,t,r,o,i){if(ne(t)){const a=this._getLayersInflateSize(e,t.symbolLayers,r,o,i),s=q(t.effects);return s>0&&(a[0]-=s,a[1]-=s,a[2]+=s,a[3]+=s),a}return this._getTextInflatedSize(e,t,i)}_getLayersInflateSize(e,t,r,o,i){let a=!0;if(!t)return e;for(const n of t){if(!n)continue;let t=[0,0,0,0];switch(n.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=n;let r=e.width;e.capStyle===b.Square||e.joinStyle===g.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r;break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=n;if("CIMVectorMarker"===n.type){const e=n;if(t=this._vectorMarkerBounds(t,e,r,i),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,o=(e.frame.ymin+e.frame.ymax)/2;t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o;const i=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=i,t[1]*=i,t[2]*=i,t[3]*=i}}else if("CIMPictureMarker"===n.type){const o=n,i=r.getResource(o.url);let a=1;s(i)&&i.height&&(a=i.width/i.height);const l=e.size/2,c=e.size*a*o.scaleX/2;t=[-c,-l,c,l]}else{const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,o;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,o=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),o=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o}let a=z(e.rotation);if(e.rotateClockwise&&(a=-a),o&&(a-=o),a){const e=B*a,r=Math.cos(e),o=Math.sin(e),i=c([D,D,-D,-D]);m(i,[t[0]*r-t[1]*o,t[0]*o+t[1]*r]),m(i,[t[0]*r-t[3]*o,t[0]*o+t[3]*r]),m(i,[t[2]*r-t[1]*o,t[2]*o+t[1]*r]),m(i,[t[2]*r-t[3]*o,t[2]*o+t[3]*r]),t=i}let l=z(e.offsetX),f=z(e.offsetY);if(o){const e=B*o,t=Math.cos(e),r=Math.sin(e),i=l*r+f*t;l=l*t-f*r,f=i}t[0]+=l,t[1]+=f,t[2]+=l,t[3]+=f;const y=_(e.markerPlacement);y>0&&(t[0]-=y,t[1]-=y,t[2]+=y,t[3]+=y);break}}const l=q(n.effects);l>0&&(t[0]-=l,t[1]-=l,t[2]+=l,t[3]+=l),a?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],a=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,o){var i,a;const s=null!=(i=r.height)?i:j;if(e[0]=-s/2,e[1]=-s/2,e[2]=s/2,e[3]=s/2,!o)return e;const n=o.get(r);if(!n)return e;const{text:l,mosaicItem:c}=n;if(!c||0===c.glyphMosaicItems.length)return e;const m=h(r.lineGapType,null!=(a=r.lineGap)?a:0,s),f=t(l)[1],y=c.glyphMosaicItems,S=N(y,f,{scale:s/G,angle:z(r.angle),xOffset:z(r.offsetX),yOffset:z(r.offsetY),hAlign:u(r.horizontalAlignment),vAlign:p(r.verticalAlignment),maxLineWidth:512,lineHeight:A*Math.max(.25,Math.min(m||1,4)),decoration:r.font.decoration||"none",isCIM:!0}).boundsT;return e[0]=S.x-S.halfWidth,e[1]=-S.y-S.halfHeight,e[2]=S.x+S.halfWidth,e[3]=-S.y+S.halfHeight,e}}class ${static getEnvelope(e,t){const r=new S(t);if(Array.isArray(e)){let t;for(const o of e)t?t.union(U(r,o)):t=U(r,o);return t}return U(r,e)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,t);if(!r)return[0,0,0];const o=(r.x+.5*r.width)*V,i=-(r.y+.5*r.height)*V,a=r.width*V+2,s=r.height*V+2;return[o/a,i/s,s]}static rasterize(e,t,r,o,i=!0){const a=r||this.getEnvelope(t,o);if(!a)return[null,0,0,0,0];const s=(a.x+.5*a.width)*V,n=(a.y+.5*a.height)*V;e.width=a.width*V,e.height=a.height*V,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=M.createScale(V,-V);c.translate(.5*e.width-s,.5*e.height+n);const m=new d(l,o,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};m.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new y;m.drawMarker(t,e);break}}const f=l.getImageData(0,0,e.width,e.height),h=new Uint8Array(f.data);if(i){let e;for(let t=0;t<h.length;t+=4)e=h[t+3]/255,h[t]=h[t]*e,h[t+1]=h[t+1]*e,h[t+2]=h[t+2]*e}return[h,e.width,e.height,-s/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:o,font:i,haloColor:a,haloSize:s,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:m,xoffset:f,yoffset:y}=e;let h,u,p,S,M;i&&(h=i.family,u=i.style,p=i.weight,S=i.size,M=i.decoration);let d=!1;if(c){d=t(c)[1]}return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:C.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:I.Normal,fontEncoding:k.Unicode,fontFamilyName:h||"Arial",fontStyleName:oe(u,p),fontType:x.Unspecified,haloSize:s,height:S,hinting:w.Default,horizontalAlignment:ee(null!=n?n:"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:z(f),offsetY:z(y),strikethrough:"line-through"===M,underline:"underline"===M,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:re(o)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:re(a)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:d?P.RTL:P.LTR,verticalAlignment:te(null!=m?m:"baseline"),verticalGlyphOrientation:L.Right,wordSpacing:100,billboardMode3D:v.FaceNearPlane},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:o,xoffset:i,xscale:a,yoffset:s,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const{cap:e,join:t,miterLimit:o,width:i}=r;l.push({type:"CIMSolidStroke",color:re(r.color),capStyle:Q(e),joinStyle:Z(t),miterLimit:o,width:i})}let m=e.url;"esriPFS"===e.type&&e.imageData&&(m=e.imageData);const f="angle"in e?e.angle:0,y=o*(a||1),h=t*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:F.Picture,tintColor:null,url:m,height:h,width:y,offsetX:z(i),offsetY:z(s),rotation:z(-f),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:r,outline:i}=e,s=[],n={type:"CIMPolygonSymbol",symbolLayers:s};let l=null;if(i){const{cap:e,join:t,style:r}=i;"solid"!==r&&"none"!==r&&"esriSLSSolid"!==r&&"esriSLSNull"!==r&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:se(r,e),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),s.push({type:"CIMSolidStroke",color:re(i.color),capStyle:Q(e),joinStyle:Z(t),miterLimit:i.miterLimit,width:i.width,effects:l})}if(r&&"solid"!==r&&"none"!==r&&"esriSFSSolid"!==r&&"esriSFSNull"!==r){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:re(t),capStyle:b.Butt,joinStyle:g.Miter,width:.75}]};let i=0;const n=a(Math.ceil(window.devicePixelRatio)),l=ce(r)?8*n:10*n;switch(r){case"vertical":case"esriSFSVertical":i=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":i=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":i=45;break;case"cross":case"esriSFSCross":i=0}s.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:i,separation:l}),"cross"===r||"esriSFSCross"===r?s.push({type:"CIMHatchFill",lineSymbol:o(e),offsetX:0,offsetY:0,rotation:90,separation:l}):"diagonal-cross"!==r&&"esriSFSDiagonalCross"!==r||s.push({type:"CIMHatchFill",lineSymbol:o(e),offsetX:0,offsetY:0,rotation:45,separation:l})}else!r||"solid"!==r&&"esriSFSSolid"!==r||s.push({type:"CIMSolidFill",enable:!0,color:re(t)});return n}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:o,marker:i,miterLimit:a,style:s,width:n}=e;let l=null;"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:se(s,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(i){let e;switch(i.placement){case"begin-end":e=T.Both;break;case"begin":e=T.JustBegin;break;case"end":e=T.JustEnd;break;default:e=T.None}const t=$.fromSimpleMarker(i,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return"none"!==s&&"esriSLSNull"!==s&&c.push({type:"CIMSolidStroke",color:re(r),capStyle:Q(t),joinStyle:Z(o),miterLimit:a,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:o,xoffset:i,yoffset:a}=e;let s=e.url;return"esriPMS"===e.type&&e.imageData&&(s=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:F.Picture,tintColor:null,url:s,size:r,width:o,offsetX:z(i),offsetY:z(a),rotation:z(-t)}]}}static fromSimpleMarker(e,t,r){var o;const{style:i}=e,a=null!=(o=e.color)?o:r;if("path"===i){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:n(Math.round(l(r.width))),color:re(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:re(a),path:e.path});const[r,o]=le("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:o,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[s,c]=le(i);let m;if(c&&s){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:t.width>.667?n(Math.round(l(t.width))):t.width,color:re(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:re(a)});r.push({type:"CIMSolidFill",enable:!0,color:re(a)});const o={type:"CIMPolygonSymbol",symbolLayers:r};m={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6*t),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:s,markerGraphics:[{type:"CIMMarkerGraphic",geometry:c,symbol:o}]}]}}return m}static fromCIMHatchFill(e){var t;const r=null!=(t=e.separation)?t:R,o=r/2,i=4;let a=this._getLineSymbolPeriod(e.lineSymbol)||i;for(;a<i;)a*=2;const s=a/2;return{type:"CIMVectorMarker",frame:{xmin:-s,xmax:s,ymin:-o,ymax:o},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-s,0],[s,0]]]},symbol:e.lineSymbol}],size:r}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers){const e=this._getEffectsRepeat(r.effects);if(e)return e;if(r){const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:X.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={type:e.type,...e};let o,i,a,s;if(r.markerPlacement=null,r.anchorPoint=null,!0===t.shiftOddRows){i=t.stepX/2,a=t.stepY,s=2*t.stepY;o=[{x:-i,y:0},{x:i,y:0},{x:0,y:a},{x:0,y:-a}].map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}})))}else i=t.stepX/2,a=t.stepY/2,s=t.stepY,o=[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}];return{type:"CIMVectorMarker",frame:{xmin:-i,xmax:i,ymin:-a,ymax:a},markerGraphics:o,size:s}}static getFillColor(e){if(!e)return null;switch(e.type){case"CIMPolygonSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=$.getFillColor(t);if(null!=e)return e}break;case"CIMTextSymbol":return $.getFillColor(e.symbol);case"CIMSolidFill":return e.color}}static getStrokeColor(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=$.getStrokeColor(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return $.getStrokeColor(e.symbol);case"CIMSolidStroke":return e.color}}static getStrokeWidth(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=$.getStrokeWidth(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return $.getStrokeWidth(e.symbol);case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return e.width}}static getSize(e){if(e)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers){const e=$.getSize(r);e>t&&(t=e)}return t}case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":return e.width;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":return e.size}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class J{static rasterizeSimpleFill(e,t,r){"solid"!==t&&"none"!==t&&"esriSFSSolid"!==t&&"esriSFSNull"!==t||console.error("Unexpected: style does not require rasterization");const o=a(Math.ceil(r)),i=ce(t)?8*o:16*o,s=2*o;e.width=i,e.height=i;const n=e.getContext("2d");n.strokeStyle="#FFFFFF",n.lineWidth=o,n.beginPath(),"vertical"!==t&&"cross"!==t&&"esriSFSCross"!==t&&"esriSFSVertical"!==t||(n.moveTo(i/2,-s),n.lineTo(i/2,i+s)),"horizontal"!==t&&"cross"!==t&&"esriSFSCross"!==t&&"esriSFSHorizontal"!==t||(n.moveTo(-s,i/2),n.lineTo(i+s,i/2)),"forward-diagonal"!==t&&"diagonal-cross"!==t&&"esriSFSDiagonalCross"!==t&&"esriSFSForwardDiagonal"!==t||(n.moveTo(-s,-s),n.lineTo(i+s,i+s),n.moveTo(i-s,-s),n.lineTo(i+s,s),n.moveTo(-s,i-s),n.lineTo(s,i+s)),"backward-diagonal"!==t&&"diagonal-cross"!==t&&"esriSFSBackwardDiagonal"!==t&&"esriSFSDiagonalCross"!==t||(n.moveTo(i+s,-s),n.lineTo(-s,i+s),n.moveTo(s,-s),n.lineTo(-s,s),n.moveTo(i+s,i-s),n.lineTo(i-s,i+s)),n.stroke();const l=n.getImageData(0,0,e.width,e.height),c=new Uint8Array(l.data);let m;for(let a=0;a<c.length;a+=4)m=c[a+3]/255,c[a]=c[a]*m,c[a+1]=c[a+1]*m,c[a+2]=c[a+2]*m;return[c,e.width,e.height]}static rasterizeSimpleLine(e,t){return this.rasterizeDash(e,t)}static rasterizeDash(e,t){const o="Butt"===t,i="Square"===t,a=!o&&!i;e.length%2==1&&(e=[...e,...e]);const s=15.5,n=2*s;let l=0;for(const r of e)l+=r;const c=Math.round(l*s),m=new Float32Array(c*n),f=.5*s;let y=0,h=0,u=.5,p=!0;for(const r of e){for(y=h,h+=r*s;u<=h;){let e=.5;for(;e<n;){const t=(e-.5)*c+u-.5,r=a?(e-s)*(e-s):Math.abs(e-s);m[t]=p?o?Math.max(Math.max(y+f-u,r),Math.max(u-h+f,r)):r:a?Math.min((u-y)*(u-y)+r,(u-h)*(u-h)+r):i?Math.min(Math.max(u-y,r),Math.max(h-u,r)):Math.min(Math.max(u-y+f,r),Math.max(h+f-u,r)),e++}u++}p=!p}const S=m.length,M=new Uint8Array(4*S);for(let d=0;d<S;++d){const e=(a?Math.sqrt(m[d]):m[d])/s;r(e,M,4*d)}return[M,c,n]}}class K{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let o=!1;for(const t of r)if(t.primitiveName===e.primitiveName){o=!0;break}if(!o)for(const i of t)i.primitiveName===e.primitiveName&&r.push(i)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)K.findApplicableOverrides(o,t,r);if(e.symbolLayers)for(const o of e.symbolLayers)K.findApplicableOverrides(o,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const o of e.effects)K.findApplicableOverrides(o,t,r);if(e.markerPlacement&&K.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const o of e.markerGraphics)K.findApplicableOverrides(o,t,r),K.findApplicableOverrides(o.symbol,t,r)}else"CIMCharacterMarker"===e.type?K.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type&&K.findApplicableOverrides(e.lineSymbol,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const o=e.length;for(let i=0;i<o;i++){const o=e[i],a=null==o?void 0:o.primitiveName;if(a){let e=!1;for(const t of r)if(t.primitiveName===a){e=!0;break}if(!e)for(const o of t)o.primitiveName===a&&r.push(o)}}}static applyOverrides(e,t,r,o){if(!t)return;const i=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;if(e.primitiveName)for(const a of t)if(a.primitiveName===e.primitiveName){const t=i(a.propertyName);if(o&&o.push({cim:e,nocapPropertyName:t,value:e[t]}),a.expression&&(a.value=K.toValue(a.propertyName,a.expression)),r){let t=!1;for(const o of r)o.primitiveName===e.primitiveName&&(t=!0);t||r.push(a)}e[t]=a.value}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const i of e.effects)K.applyOverrides(i,t,r,o);if(e.symbolLayers)for(const i of e.symbolLayers)K.applyOverrides(i,t,r,o);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const i of e.effects)K.applyOverrides(i,t,r,o);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const i of e.markerGraphics)K.applyOverrides(i,t,r,o),K.applyOverrides(i.symbol,t,r,o)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const Q=e=>{if(!e)return b.Butt;switch(e){case"butt":return b.Butt;case"square":return b.Square;case"round":return b.Round}},Z=e=>{if(!e)return g.Miter;switch(e){case"miter":return g.Miter;case"round":return g.Round;case"bevel":return g.Bevel}},ee=e=>{if(!e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center";case"justify":return"Justify"}},te=e=>{if(!e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},re=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:o,a:i}=e;return[t,r,o,255*i]},oe=(e,t)=>{const r=ie(t),o=ae(e);return r&&o?`${r}-${o}`:`${r}${o}`},ie=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},ae=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},se=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return X.error("Unexpected: style does not require rasterization"),[0,0];default:return X.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function ne(e){return void 0!==e.symbolLayers}const le=e=>{const t=100,r=50;let o,i;const a=e;if("circle"===a||"esriSMSCircle"===a){const e=.25;let t=Math.acos(1-e/r),a=Math.ceil(E/t/4);0===a&&(a=1),t=O/a,a*=4;const s=[];s.push([r,0]);for(let o=1;o<a;o++)s.push([r*Math.cos(o*t),-r*Math.sin(o*t)]);s.push([r,0]),o={rings:[s]},i={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===a||"esriSMSCross"===a){const e=0;o={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===a||"esriSMSDiamond"===a)o={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===a||"esriSMSSquare"===a)o={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===a||"esriSMSX"===a){const e=0;o={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===a||"esriSMSTriangle"===a){const e=t*.5773502691896257,r=-e,a=2/3*t,s=a-t;o={rings:[[[r,s],[0,a],[e,s],[r,s]]]},i={xmin:r,ymin:s,xmax:e,ymax:a}}else"arrow"===a&&(o={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},i={xmin:-r,ymin:-r,xmax:r,ymax:r});return[i,o]},ce=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e;export{W as CIMSimbolInflatedSizeHelper,$ as CIMSymbolHelper,K as OverrideHelper,J as SymbolHelper,se as slsDashToTemplateArray,Y as symbolToCIM};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import t from"../../request.js";import{throwIfAborted as r}from"../../core/promiseUtils.js";import{pt2px as a}from"../../core/screenUtils.js";import{numericHash as i}from"../../core/string.js";import{getJsonType as s,isPolygon as o,isPolyline as n}from"../../geometry/support/jsonUtils.js";import{analyzeCIMSymbol as c,analyzeCIMResource as l}from"./cimAnalyzer.js";import m from"./CIMResourceManager.js";import h from"./Rasterizer.js";import{TextRasterizer as f}from"./TextRasterizer.js";import{createLabelOverrideFunction as g,evaluateValueOrFunction as y,colorToArray as u}from"./utils.js";import{scaleCIMMarker as p}from"../support/cimSymbolUtils.js";import d from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const C=(e,t,r)=>{if(e&&e.targetSize){let i;if(r){const t=Math.max(r.frame.xmax-r.frame.xmin,r.frame.ymax-r.frame.ymin);i=e.targetSize/a(t)}else i=e.targetSize/t.referenceSize;return i}return e&&e.scaleFactor?e.scaleFactor:1},I={fill:{legend:{frame:{xmax:15,xmin:0,ymax:15,ymin:0},geometry:{rings:[[[0,15],[15,7.5],[15,0],[0,0],[0,15]]]},canvasPaths:{rings:[[[0,15],[0,0],[15,7.5],[15,15],[0,15]]]}},preview:{frame:{xmax:100,xmin:0,ymax:100,ymin:0},geometry:{rings:[[[0,100],[100,100],[100,0],[0,0],[0,100]]]},canvasPaths:{rings:[[[0,100],[0,0],[100,0],[100,100],[0,100]]]}}},stroke:{legend:{frame:{xmax:24,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[12,0],[24,0]]]},canvasPaths:{paths:[[[0,2],[12,2],[24,2]]]}},preview:{frame:{xmax:100,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[50,0],[100,0]]]},canvasPaths:{paths:[[[0,2],[50,2],[100,2]]]}}}};class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._pictureMarkerCache=new Map,this._textRasterizer=new f,this._cimResourceManager=new m,this._rasterizer=new h(this._cimResourceManager)}async rasterizeCIMSymbolAsync(e,t,r,a,i,o,n,c){a=a||(t?null!=t.centroid?"esriGeometryPolygon":s(t.geometry):null)||P(e);const l=await this.analyzeCIMSymbol(e,t?x(t.attributes):null,r,a,c);return this.rasterizeCIMSymbol(l,t,a,i,o,n)}async analyzeCIMSymbol(e,t,a,i,s){const o=[],n=t?{geometryType:i,spatialReference:this._spatialReference,fields:t}:null;let l;await c(e.data,n,this._cimResourceManager,o,this._avoidSDF),r(s);for(const r of o)"CIMPictureMarker"!==r.cim.type&&"CIMPictureFill"!==r.cim.type&&"CIMPictureStroke"!==r.cim.type||(l||(l=[]),l.push(this._fetchPictureMarkerResource(r,s))),a&&"text"===r.type&&"string"==typeof r.text&&r.text.indexOf("[")>-1&&(r.text=g(a,r.text,r.cim.textCase));return l&&await Promise.all(l),o}async _fetchPictureMarkerResource(e,r){const a=e.materialHash;if(!this._pictureMarkerCache.get(a)){const i=(await t(e.cim.url,{responseType:"image",signal:r&&r.signal})).data;this._pictureMarkerCache.set(a,i)}}rasterizeCIMSymbol(e,t,r,a,i,s){const o=[];for(const n of e){a&&"function"==typeof a.scaleFactor&&(a.scaleFactor=a.scaleFactor(t,i,s));const e=this._getRasterizedResource(n,t,r,a,i,s);if(!e)continue;let c=0,l=e.anchorX||0,m=e.anchorY||0,h=!1,f=0,g=0;if("esriGeometryPoint"===r){const e=C(a,n,null);if(f=y(n.offsetX,t,i,s)*e||0,g=y(n.offsetY,t,i,s)*e||0,"marker"===n.type)c=y(n.rotation,t,i,s)||0,h=!!n.rotateClockwise&&n.rotateClockwise;else if("text"===n.type){if(c=y(n.angle,t,i,s)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":m=.5;break;case"bottom":m=-.5;break;case"baseline":m=-.25;break;default:m=0}}}null!=e&&o.push({angle:c,rotateClockWise:h,anchorX:l,anchorY:m,offsetX:f,offsetY:g,rasterizedResource:e})}return this.getSymbolImage(o)}getSymbolImage(e){const t=document.createElement("canvas"),r=t.getContext("2d");let i=0,s=0,o=0,n=0;const c=[];for(let f=0;f<e.length;f++){const t=e[f],l=t.rasterizedResource;if(!l)continue;const m=l.size,h=t.offsetX,g=t.offsetY,y=t.anchorX,u=t.anchorY,p=t.rotateClockWise||!1;let d=t.angle,M=a(h)-m[0]*(.5+y),C=a(g)-m[1]*(.5+u),I=M+m[0],z=C+m[1];if(d){p&&(d=-d);const e=Math.sin(d*Math.PI/180),t=Math.cos(d*Math.PI/180),r=M*t-C*e,a=M*e+C*t,i=M*t-z*e,s=M*e+z*t,o=I*t-z*e,n=I*e+z*t,c=I*t-C*e,l=I*e+C*t;M=Math.min(r,i,o,c),C=Math.min(a,s,n,l),I=Math.max(r,i,o,c),z=Math.max(a,s,n,l)}i=M<i?M:i,s=C<s?C:s,o=I>o?I:o,n=z>n?z:n;const x=r.createImageData(l.size[0],l.size[1]);x.data.set(new Uint8ClampedArray(l.image.buffer));const P={offsetX:h,offsetY:g,rotateClockwise:p,angle:d,rasterizedImage:x,anchorX:y,anchorY:u};c.push(P)}t.width=o-i,t.height=n-s;const l=-i,m=n;for(let f=0;f<c.length;f++){const e=c[f],t=this._imageDataToCanvas(e.rasterizedImage),i=e.rasterizedImage.width,s=e.rasterizedImage.height,o=l-i*(.5+e.anchorX),n=m-s*(.5-e.anchorY);if(e.angle){const i=(360-e.angle)*Math.PI/180;r.save(),r.translate(a(e.offsetX),-a(e.offsetY)),r.translate(l,m),r.rotate(i),r.translate(-l,-m),r.drawImage(t,o,n),r.restore()}else r.drawImage(t,o+a(e.offsetX),n-a(e.offsetY))}const h=new d({x:l/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?r.getImageData(0,0,t.width,t.height):r.createImageData(1,1),anchorPosition:h}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,r=t.getContext("2d");return t.width=e.width,t.height=e.height,r.putImageData(e,0,0),t}_imageTo32Array(t,r,a,i){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,o=s.getContext("2d");if(s.width=r,s.height=a,o.drawImage(t,0,0,r,a),i){o.save();const s=new e(i);o.fillStyle=s.toHex(),o.globalCompositeOperation="multiply",o.fillRect(0,0,r,a),o.globalCompositeOperation="destination-atop",o.drawImage(t,0,0,r,a),o.restore()}return new Uint32Array(o.getImageData(0,0,r,a).data.buffer)}_getRasterizedResource(e,t,r,a,s,o){let n,c,l,m,h=null,f=null;if("esriGeometryPolyline"===r||"esriGeometryPolygon"===r){const m=a&&a.style?a.style:M.Legend,g="esriGeometryPolyline"===r?I.stroke[m]:I.fill[m];if("line"===e.type){if("CIMSolidStroke"!==e.cim.type){if("CIMPictureStroke"===e.cim.type){const r=y(e.width,t,s,o),a=y(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}return null}({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}else if("marker"===e.type){if("CIMPictureMarker"===e.cim.type)return null;if("CIMVectorMarker"!==e.cim.type)return null;e.cim.offsetX=y(e.offsetX,t,s,o),e.cim.offsetY=y(e.offsetY,t,s,o),e.cim.rotation=y(e.rotation,t,s,o),e.cim.markerPlacement=e.markerPlacement,({analyzedCIM:n}=w(e,t,s,o)),l=i(JSON.stringify(n)).toString(),c=this._embedCIMLayerInVectorMarker(n,g),h=y(e.size,t,s,o),f=e.path}else{if("text"===e.type)return null;if("fill"===e.type){if("CIMHatchFill"===e.cim.type||"CIMVectorMarker"===e.cim.type||"CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type){const r=e.cim.size||e.cim.height;let a,i,c;if("CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type)({image:a,width:i,height:c}=this._getPictureResource(e,r,y(e.color,t,s,o)));else{({analyzedCIM:n,hash:l}=w(e,t,s,o));const m=this._rasterizer.rasterizeJSONResource({cim:n,type:e.type,url:e.url,mosaicHash:l,size:r,path:f},1,this._avoidSDF);a=m.image,i=m.size[0],c=m.size[1]}return this._rasterizePictureResource(e,a,i,c,g,null)}if("CIMSolidFill"!==e.cim.type)return null;({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}}}else{if("text"===e.type)return m=this._rasterizeTextResource(e,t,a,s,o),m;({analyzedCIM:n,hash:l}=w(e,t,s,o));const r=C(a,e,null);if("CIMPictureMarker"===e.cim.type){const a=y(e.size,t,s,o)*r,{image:i,width:n,height:c}=this._getPictureResource(e,a,y(e.color,t,s,o));return m={image:i,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},m}p(n,r,{preserveOutlineWidth:!1}),c=n}l+=r,a&&(l+=JSON.stringify(a));const g=this._resourceCache;return g.has(l)?g.get(l):(m=this._rasterizer.rasterizeJSONResource({cim:c,type:e.type,url:e.url,mosaicHash:l,size:h,path:f},window.devicePixelRatio||1,this._avoidSDF),g.set(l,m),m)}_rasterizeTextResource(e,t,r,a,i){const s=C(r,e,null),o=y(e.text,t,a,i);if(!o||0===o.length)return null;const n=y(e.fontName,t,a,i),c=y(e.style,t,a,i),l=y(e.weight,t,a,i),m=y(e.decoration,t,a,i),h=y(e.size,t,a,i)*s,f=y(e.horizontalAlignment,t,a,i),g=y(e.verticalAlignment,t,a,i),p=u(y(e.color,t,a,i)),d=u(y(e.outlineColor,t,a,i)),M={color:p,size:h,horizontalAlignment:f,verticalAlignment:g,font:{family:n,style:c,weight:l,decoration:m},halo:{size:y(e.outlineSize,t,a,i)||0,color:d,style:c},pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(o,M)}_rasterizePictureResource(e,t,r,i,s,c){const l=document.createElement("canvas"),m=l.getContext("2d");l.height=a(Math.max(s.frame.ymax-s.frame.ymin,c)),l.width=a(s.frame.xmax-s.frame.xmin);const h=m.createImageData(r,i);h.data.set(new Uint8ClampedArray(t.buffer));const f=this._imageDataToCanvas(h),g=m.createPattern(f,"repeat"),y=Math.cos((-e.cim.rotation||0)*Math.PI/180),u=Math.sin((-e.cim.rotation||0)*Math.PI/180);g.setTransform({m11:y,m12:u,m21:-u,m22:y,m41:a(e.cim.offsetX)||0,m42:a(e.cim.offsetY)||0});const p=s.canvasPaths;let d,M,C;o(p)?(d=p.rings,m.fillStyle=g,M=m.fill,C=["evenodd"]):n(p)&&(d=p.paths,m.strokeStyle=g,m.lineWidth=c,M=m.stroke,d[0][0][1]=l.height/2,d[0][1][1]=l.height/2),m.beginPath();for(const o of d){const e=o?o.length:0;if(e>1){let t=o[0];m.moveTo(a(t[0]),a(t[1]));for(let r=1;r<e;++r)t=o[r],m.lineTo(a(t[0]),a(t[1]));m.closePath()}}M.apply(m,C);const I=m.getImageData(0,0,l.width,l.height),z=new Uint8Array(I.data);return{size:[l.width,l.height],image:new Uint32Array(z.buffer),sdf:!1,simplePattern:!1,anchorX:0,anchorY:0}}_getPictureResource(e,t,r){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const s=i.height/i.width,o=t?s>1?a(t):a(t)/s:i.width,n=t?s>1?a(t)*s:a(t):i.height;return{image:this._imageTo32Array(i,o,n,r),width:o,height:n}}_embedCIMLayerInVectorMarker(e,t){const r=o(t.geometry)?"CIMPolygonSymbol":"CIMLineSymbol",a=t.frame;return{type:"CIMVectorMarker",frame:a,size:a.ymax-a.ymin,markerGraphics:[{type:"CIMMarkerGraphic",geometry:t.geometry,symbol:{type:r,symbolLayers:[e]}}]}}}function x(e){return(e?Object.keys(e):[]).map((t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"})))}function P(e){if(!(e&&e.data&&e.data.symbol))return null;switch(e.data.symbol.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function w(e,t,r,a){let i,s;if("function"==typeof e.materialHash){i=(0,e.materialHash)(t,r,a),s=l(e.cim,e.materialOverrides)}else i=e.materialHash,s=e.cim;return{analyzedCIM:s,hash:i}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
5
+ import e from"../../Color.js";import t from"../../request.js";import{throwIfAborted as r}from"../../core/promiseUtils.js";import{pt2px as a}from"../../core/screenUtils.js";import{numericHash as i}from"../../core/string.js";import{getJsonType as s,isPolygon as o,isPolyline as n}from"../../geometry/support/jsonUtils.js";import{analyzeCIMSymbol as c,analyzeCIMResource as l}from"./cimAnalyzer.js";import m from"./CIMResourceManager.js";import h from"./Rasterizer.js";import{TextRasterizer as f}from"./TextRasterizer.js";import{createLabelOverrideFunction as g,evaluateValueOrFunction as u,colorToArray as y}from"./utils.js";import{scaleCIMMarker as p}from"../support/cimSymbolUtils.js";import d from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const C=(e,t,r)=>{if(e&&e.targetSize){let i;if(r){const t=Math.max(r.frame.xmax-r.frame.xmin,r.frame.ymax-r.frame.ymin);i=e.targetSize/a(t)}else i=e.targetSize/t.referenceSize;return i}return e&&e.scaleFactor?e.scaleFactor:1},I={fill:{legend:{frame:{xmax:15,xmin:0,ymax:15,ymin:0},geometry:{rings:[[[0,15],[15,7.5],[15,0],[0,0],[0,15]]]},canvasPaths:{rings:[[[0,15],[0,0],[15,7.5],[15,15],[0,15]]]}},preview:{frame:{xmax:100,xmin:0,ymax:100,ymin:0},geometry:{rings:[[[0,100],[100,100],[100,0],[0,0],[0,100]]]},canvasPaths:{rings:[[[0,100],[0,0],[100,0],[100,100],[0,100]]]}}},stroke:{legend:{frame:{xmax:24,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[12,0],[24,0]]]},canvasPaths:{paths:[[[0,2],[12,2],[24,2]]]}},preview:{frame:{xmax:100,xmin:0,ymax:2,ymin:-2},geometry:{paths:[[[0,0],[50,0],[100,0]]]},canvasPaths:{paths:[[[0,2],[50,2],[100,2]]]}}}};class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._pictureMarkerCache=new Map,this._textRasterizer=new f,this._cimResourceManager=new m,this._rasterizer=new h(this._cimResourceManager)}async rasterizeCIMSymbolAsync(e,t,r,a,i,o,n,c){a=a||(t?null!=t.centroid?"esriGeometryPolygon":s(t.geometry):null)||x(e);const l=await this.analyzeCIMSymbol(e,t?P(t.attributes):null,r,a,c);return this.rasterizeCIMSymbol(l,t,a,i,o,n)}async analyzeCIMSymbol(e,t,a,i,s){const o=[],n=t?{geometryType:i,spatialReference:this._spatialReference,fields:t}:null;let l;await c(e.data,n,this._cimResourceManager,o,this._avoidSDF),r(s);for(const r of o)"CIMPictureMarker"!==r.cim.type&&"CIMPictureFill"!==r.cim.type&&"CIMPictureStroke"!==r.cim.type||(l||(l=[]),l.push(this._fetchPictureMarkerResource(r,s))),a&&"text"===r.type&&"string"==typeof r.text&&r.text.indexOf("[")>-1&&(r.text=g(a,r.text,r.cim.textCase));return l&&await Promise.all(l),o}async _fetchPictureMarkerResource(e,r){const a=e.materialHash;if(!this._pictureMarkerCache.get(a)){const i=(await t(e.cim.url,{responseType:"image",signal:r&&r.signal})).data;this._pictureMarkerCache.set(a,i)}}rasterizeCIMSymbol(e,t,r,a,i,s){const o=[];for(const n of e){a&&"function"==typeof a.scaleFactor&&(a.scaleFactor=a.scaleFactor(t,i,s));const e=this._getRasterizedResource(n,t,r,a,i,s);if(!e)continue;let c=0,l=e.anchorX||0,m=e.anchorY||0,h=!1,f=0,g=0;if("esriGeometryPoint"===r){const e=C(a,n,null);if(f=u(n.offsetX,t,i,s)*e||0,g=u(n.offsetY,t,i,s)*e||0,"marker"===n.type)c=u(n.rotation,t,i,s)||0,h=!!n.rotateClockwise&&n.rotateClockwise;else if("text"===n.type){if(c=u(n.angle,t,i,s)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":m=.5;break;case"bottom":m=-.5;break;case"baseline":m=-.25;break;default:m=0}}}null!=e&&o.push({angle:c,rotateClockWise:h,anchorX:l,anchorY:m,offsetX:f,offsetY:g,rasterizedResource:e})}return this.getSymbolImage(o)}getSymbolImage(e){const t=document.createElement("canvas"),r=t.getContext("2d");let i=0,s=0,o=0,n=0;const c=[];for(let f=0;f<e.length;f++){const t=e[f],l=t.rasterizedResource;if(!l)continue;const m=l.size,h=t.offsetX,g=t.offsetY,u=t.anchorX,y=t.anchorY,p=t.rotateClockWise||!1;let d=t.angle,M=a(h)-m[0]*(.5+u),C=a(g)-m[1]*(.5+y),I=M+m[0],z=C+m[1];if(d){p&&(d=-d);const e=Math.sin(d*Math.PI/180),t=Math.cos(d*Math.PI/180),r=M*t-C*e,a=M*e+C*t,i=M*t-z*e,s=M*e+z*t,o=I*t-z*e,n=I*e+z*t,c=I*t-C*e,l=I*e+C*t;M=Math.min(r,i,o,c),C=Math.min(a,s,n,l),I=Math.max(r,i,o,c),z=Math.max(a,s,n,l)}i=M<i?M:i,s=C<s?C:s,o=I>o?I:o,n=z>n?z:n;const P=r.createImageData(l.size[0],l.size[1]);P.data.set(new Uint8ClampedArray(l.image.buffer));const x={offsetX:h,offsetY:g,rotateClockwise:p,angle:d,rasterizedImage:P,anchorX:u,anchorY:y};c.push(x)}t.width=o-i,t.height=n-s;const l=-i,m=n;for(let f=0;f<c.length;f++){const e=c[f],t=this._imageDataToCanvas(e.rasterizedImage),i=e.rasterizedImage.width,s=e.rasterizedImage.height,o=l-i*(.5+e.anchorX),n=m-s*(.5-e.anchorY);if(e.angle){const i=(360-e.angle)*Math.PI/180;r.save(),r.translate(a(e.offsetX),-a(e.offsetY)),r.translate(l,m),r.rotate(i),r.translate(-l,-m),r.drawImage(t,o,n),r.restore()}else r.drawImage(t,o+a(e.offsetX),n-a(e.offsetY))}const h=new d({x:l/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?r.getImageData(0,0,t.width,t.height):r.createImageData(1,1),anchorPosition:h}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,r=t.getContext("2d");return t.width=e.width,t.height=e.height,r.putImageData(e,0,0),t}_imageTo32Array(t,r,a,i){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,o=s.getContext("2d");if(s.width=r,s.height=a,o.drawImage(t,0,0,r,a),i){o.save();const s=new e(i);o.fillStyle=s.toHex(),o.globalCompositeOperation="multiply",o.fillRect(0,0,r,a),o.globalCompositeOperation="destination-atop",o.drawImage(t,0,0,r,a),o.restore()}return new Uint32Array(o.getImageData(0,0,r,a).data.buffer)}_getRasterizedResource(e,t,r,a,s,o){let n,c,l,m,h=null,f=null;if("esriGeometryPolyline"===r||"esriGeometryPolygon"===r){const m=a&&a.style?a.style:M.Legend,g="esriGeometryPolyline"===r?I.stroke[m]:I.fill[m];if("line"===e.type){if("CIMSolidStroke"!==e.cim.type){if("CIMPictureStroke"===e.cim.type){const r=u(e.width,t,s,o),a=u(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}return null}({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}else if("marker"===e.type){if("CIMPictureMarker"===e.cim.type){const r=u(e.size,t,s,o),a=u(e.color,t,s,o),{image:i,width:n,height:c}=this._getPictureResource(e,r,a);return this._rasterizePictureResource(e,i,n,c,g,r)}if("CIMVectorMarker"!==e.cim.type)return null;e.cim.offsetX=u(e.offsetX,t,s,o),e.cim.offsetY=u(e.offsetY,t,s,o),e.cim.rotation=u(e.rotation,t,s,o),e.cim.markerPlacement=e.markerPlacement,({analyzedCIM:n}=w(e,t,s,o)),l=i(JSON.stringify(n)).toString(),c=this._embedCIMLayerInVectorMarker(n,g),h=u(e.size,t,s,o),f=e.path}else{if("text"===e.type)return null;if("fill"===e.type){if("CIMHatchFill"===e.cim.type||"CIMVectorMarker"===e.cim.type||"CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type){const r=e.cim.size||e.cim.height;let a,i,c;if("CIMPictureMarker"===e.cim.type||"CIMPictureFill"===e.cim.type)({image:a,width:i,height:c}=this._getPictureResource(e,r,u(e.color,t,s,o)));else{({analyzedCIM:n,hash:l}=w(e,t,s,o));const m=this._rasterizer.rasterizeJSONResource({cim:n,type:e.type,url:e.url,mosaicHash:l,size:r,path:f},1,this._avoidSDF);a=m.image,i=m.size[0],c=m.size[1]}return this._rasterizePictureResource(e,a,i,c,g,null)}if("CIMSolidFill"!==e.cim.type)return null;({analyzedCIM:n,hash:l}=w(e,t,s,o)),c=this._embedCIMLayerInVectorMarker(n,g)}}}else{if("text"===e.type)return m=this._rasterizeTextResource(e,t,a,s,o),m;({analyzedCIM:n,hash:l}=w(e,t,s,o));const r=C(a,e,null);if("CIMPictureMarker"===e.cim.type){const a=u(e.size,t,s,o)*r,{image:i,width:n,height:c}=this._getPictureResource(e,a,u(e.color,t,s,o));return m={image:i,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},m}p(n,r,{preserveOutlineWidth:!1}),c=n}l+=r,a&&(l+=JSON.stringify(a));const g=this._resourceCache;return g.has(l)?g.get(l):(m=this._rasterizer.rasterizeJSONResource({cim:c,type:e.type,url:e.url,mosaicHash:l,size:h,path:f},window.devicePixelRatio||1,this._avoidSDF),g.set(l,m),m)}_rasterizeTextResource(e,t,r,a,i){const s=C(r,e,null),o=u(e.text,t,a,i);if(!o||0===o.length)return null;const n=u(e.fontName,t,a,i),c=u(e.style,t,a,i),l=u(e.weight,t,a,i),m=u(e.decoration,t,a,i),h=u(e.size,t,a,i)*s,f=u(e.horizontalAlignment,t,a,i),g=u(e.verticalAlignment,t,a,i),p=y(u(e.color,t,a,i)),d=y(u(e.outlineColor,t,a,i)),M={color:p,size:h,horizontalAlignment:f,verticalAlignment:g,font:{family:n,style:c,weight:l,decoration:m},halo:{size:u(e.outlineSize,t,a,i)||0,color:d,style:c},pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(o,M)}_rasterizePictureResource(e,t,r,i,s,c){const l=document.createElement("canvas"),m=l.getContext("2d");l.height=a(Math.max(s.frame.ymax-s.frame.ymin,c)),l.width=a(s.frame.xmax-s.frame.xmin);const h=m.createImageData(r,i);h.data.set(new Uint8ClampedArray(t.buffer));const f=this._imageDataToCanvas(h),g=m.createPattern(f,"repeat"),u=Math.cos((-e.cim.rotation||0)*Math.PI/180),y=Math.sin((-e.cim.rotation||0)*Math.PI/180);g.setTransform({m11:u,m12:y,m21:-y,m22:u,m41:a(e.cim.offsetX)||0,m42:a(e.cim.offsetY)||0});const p=s.canvasPaths;let d,M,C;o(p)?(d=p.rings,m.fillStyle=g,M=m.fill,C=["evenodd"]):n(p)&&(d=p.paths,m.strokeStyle=g,m.lineWidth=c,M=m.stroke,d[0][0][1]=l.height/2,d[0][1][1]=l.height/2),m.beginPath();for(const o of d){const e=o?o.length:0;if(e>1){let t=o[0];m.moveTo(a(t[0]),a(t[1]));for(let r=1;r<e;++r)t=o[r],m.lineTo(a(t[0]),a(t[1]));m.closePath()}}M.apply(m,C);const I=m.getImageData(0,0,l.width,l.height),z=new Uint8Array(I.data);return{size:[l.width,l.height],image:new Uint32Array(z.buffer),sdf:!1,simplePattern:!1,anchorX:0,anchorY:0}}_getPictureResource(e,t,r){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const s=i.height/i.width,o=t?s>1?a(t):a(t)/s:i.width,n=t?s>1?a(t)*s:a(t):i.height;return{image:this._imageTo32Array(i,o,n,r),width:o,height:n}}_embedCIMLayerInVectorMarker(e,t){const r=o(t.geometry)?"CIMPolygonSymbol":"CIMLineSymbol",a=t.frame;return{type:"CIMVectorMarker",frame:a,size:a.ymax-a.ymin,markerGraphics:[{type:"CIMMarkerGraphic",geometry:t.geometry,symbol:{type:r,symbolLayers:[e]}}]}}}function P(e){return(e?Object.keys(e):[]).map((t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"})))}function x(e){if(!(e&&e.data&&e.data.symbol))return null;switch(e.data.symbol.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function w(e,t,r,a){let i,s;if("function"==typeof e.materialHash){i=(0,e.materialHash)(t,r,a),s=l(e.cim,e.materialOverrides)}else i=e.materialHash,s=e.cim;return{analyzedCIM:s,hash:i}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import{clone as t}from"../../core/lang.js";import i from"../../core/Logger.js";import{isSome as o}from"../../core/maybe.js";import{pt2px as r}from"../../core/screenUtils.js";import{numericHash as n}from"../../core/string.js";import{createRendererExpression as l,ArcadeExpression as a}from"../../support/arcadeOnDemand.js";import{CIMSymbolHelper as s,OverrideHelper as c}from"./CIMSymbolHelper.js";import{CapType as f,JoinType as m,Alignment as p}from"./enums.js";import{getExtent as u,getSDFMetrics as y}from"./SDFHelper.js";import{fromCIMColor as h,getValue as g,_adjustTextCase as d,evaluateValueOrFunction as S,isGeometryEngineRequired as v,importGeometryEngine as N}from"./utils.js";import{CIMEffectHelper as b}from"./effects/CIMEffectHelper.js";import C from"../../views/2d/arcade/callExpressionWithFeature.js";import{getFontFamily as k}from"../../views/2d/engine/webgl/fontUtils.js";const O=i.getLogger("esri.symbols.cim.cimAnalyzer");function P(e){switch(e){case"Butt":return f.BUTT;case"Square":return f.SQUARE;default:return f.ROUND}}function M(e){switch(e){case"Bevel":return m.BEVEL;case"Miter":return m.MITER;default:return m.ROUND}}function I(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return"justify"}}function L(e){switch(e){case"Top":default:return"top";case"Center":return"middle";case"Baseline":return"baseline";case"Bottom":return"bottom"}}function w(e){let t="",i="";if(e){const o=e.toLowerCase();-1!==o.indexOf("italic")?t="italic":-1!==o.indexOf("oblique")&&(t="oblique"),-1!==o.indexOf("bold")?i="bold":-1!==o.indexOf("light")&&(i="lighter")}return{style:t,weight:i}}function X(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function x(e,t,i,o){let r;e[t]?r=e[t]:(r={},e[t]=r),r[i]=o}function z(e){const t=e.markerPlacement;return t&&t.angleToLine?p.MAP:p.SCREEN}async function J(e,t,i,o,r){const n=null!=o?o:[];if(!e)return n;let a,s;const c={};if("CIMSymbolReference"!==e.type)return O.error("Expect cim type to be 'CIMSymbolReference'"),n;if(a=e.symbol,s=e.primitiveOverrides,s){const e=[];for(const i of s){const o=i.valueExpressionInfo;if(o&&t){const r=o.expression,n=l(r,t.spatialReference,t.fields).then((e=>{e&&x(c,i.primitiveName,i.propertyName,e)}));e.push(n)}else null!=i.value&&x(c,i.primitiveName,i.propertyName,i.value)}e.length>0&&await Promise.all(e)}const f=[];switch(re(a,i,f),f.length>0&&await Promise.all(f),a.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":H(a,s,c,t,n,i,r)}return n}function H(e,t,i,o,r,n,l){if(!e)return;const a=e.symbolLayers;if(!a)return;const f=e.effects;let m;const u=s.getSize(e);"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(m=p.MAP);let y=a.length;for(;y--;){const s=a[y];if(!s||!1===s.enable)continue;let p;f&&f.length&&(p=[...f]);const h=s.effects;h&&h.length&&(f?p.push(...h):p=[...h]);const g=[];let d;c.findEffectOverrides(p,t,g),d=g.length>0?Z(p,g,i,o):p;const S=[];switch(c.findApplicableOverrides(s,t,S),s.type){case"CIMSolidFill":R(s,d,i,S,o,r);break;case"CIMPictureFill":Y(s,d,i,S,o,n,r);break;case"CIMHatchFill":A(s,d,i,S,o,r);break;case"CIMGradientFill":E(s,d,i,S,o,r);break;case"CIMSolidStroke":$(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMPictureStroke":j(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMGradientStroke":F(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMCharacterMarker":if(T(s,d,i,S,o,r))break;break;case"CIMPictureMarker":if(T(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=z(s)),W(s,d,i,S,o,n,r,m,u);break;case"CIMVectorMarker":if(T(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=z(s)),D(s,d,i,S,o,r,n,m,u,l);break;default:O.error("Cannot analyze CIM layer",s.type)}}}function R(e,t,i,o,r,l){const a=e.primitiveName,s=h(e.color),[c,f]=oe(o,a,t,null),m=n(JSON.stringify(e)+f).toString();l.push({type:"fill",templateHash:m,materialHash:c?()=>m:m,cim:e,materialOverrides:null,colorLocked:e.colorLocked,color:_(a,i,"Color",r,s,Q),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t})}function Y(e,t,i,r,l,a,s){const c=e.primitiveName,f=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},[m,p]=oe(r,c,t,null),u=n(JSON.stringify(e)+p).toString(),y=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString();let d=g(e.scaleX);if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),d/=i*(e.height/t)}s.push({type:"fill",templateHash:u,materialHash:m?()=>y:y,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:_(c,i,"TintColor",l,f,Q),height:_(c,i,"Height",l,e.height),scaleX:_(c,i,"ScaleX",l,d),angle:_(c,i,"Rotation",l,g(e.rotation)),offsetX:_(c,i,"OffsetX",l,g(e.offsetX)),offsetY:_(c,i,"OffsetY",l,g(e.offsetY)),url:e.url})}function A(e,t,i,o,r,l){const a=["Rotation","OffsetX","OffsetY"],s=o.filter((t=>t.primitiveName!==e.primitiveName&&-1===a.indexOf(t.propertyName))),c=e.primitiveName,[f,m]=oe(o,c,t,null),p=n(JSON.stringify(e)+m).toString(),u=n(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();l.push({type:"fill",templateHash:p,materialHash:f?te(u,i,s,r):u,cim:e,materialOverrides:s,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:_(c,i,"Separation",r,e.separation),scaleX:1,angle:_(c,i,"Rotation",r,g(e.rotation)),offsetX:_(c,i,"OffsetX",r,g(e.offsetX)),offsetY:_(c,i,"OffsetY",r,g(e.offsetY))})}function E(e,t,i,o,r,l){const a=e.primitiveName,[s,c]=oe(o,a,t,null),f=n(JSON.stringify(e)+c).toString();l.push({type:"fill",templateHash:f,materialHash:s?te(f,i,o,r):f,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1})}function $(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=h(e.color),m=void 0!==e.width?e.width:4,p=P(e.capStyle),u=M(e.joinStyle),y=e.miterLimit,[g,d]=oe(o,c,t,null),S=n(JSON.stringify(e)+d).toString();let v,N;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding){const e=(t=[...t]).pop();v=e.dashTemplate,N=e.scaleDash}}l.push({type:"line",templateHash:S,materialHash:g?()=>S:S,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:_(c,i,"Color",r,f,Q),width:_(c,i,"Width",r,m),cap:_(c,i,"CapStyle",r,p),join:_(c,i,"JoinStyle",r,u),miterLimit:_(c,i,"MiterLimit",r,y),referenceWidth:s,zOrder:K(e.name),dashTemplate:v,scaleDash:N})}function j(e,t,i,o,r,l,a,s){const c=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),f=e.primitiveName,m=h(e.tintColor),p=void 0!==e.width?e.width:4,u=P(e.capStyle),y=M(e.joinStyle),g=e.miterLimit,[d,S]=oe(o,f,t,null),v=n(JSON.stringify(e)+S).toString();l.push({type:"line",templateHash:v,materialHash:d?()=>c:c,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:_(f,i,"TintColor",r,m,Q),width:_(f,i,"Width",r,p),cap:_(f,i,"CapStyle",r,u),join:_(f,i,"JoinStyle",r,y),miterLimit:_(f,i,"MiterLimit",r,g),referenceWidth:s,zOrder:K(e.name),dashTemplate:null,scaleDash:!1,url:e.url})}function F(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=void 0!==e.width?e.width:4,m=P(e.capStyle),p=M(e.joinStyle),u=e.miterLimit,[y,h]=oe(o,c,t,null),g=n(JSON.stringify(e)+h).toString();l.push({type:"line",templateHash:g,materialHash:y?te(g,i,o,r):g,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:_(c,i,"Width",r,f),cap:_(c,i,"CapStyle",r,m),join:_(c,i,"JoinStyle",r,p),miterLimit:_(c,i,"MiterLimit",r,u),referenceWidth:s,zOrder:K(e.name),dashTemplate:null,scaleDash:!1})}function T(e,t,i,o,r,l){const a=e.markerPlacement;if(!a||"CIMMarkerPlacementInsidePolygon"!==a.type)return!1;const s=a,c=["Rotation","OffsetX","OffsetY"],f=o.filter((t=>t.primitiveName!==e.primitiveName&&-1===c.indexOf(t.propertyName))),m="url"in e?e.url:null,[p,u]=oe(o,s.primitiveName,t,null),y=n(JSON.stringify(e)+u).toString();let h=s.stepY,d=null,S=1;return a.shiftOddRows&&(h*=2,d=function(e){return e?2*e:0},S=.5),l.push({type:"fill",templateHash:y,materialHash:p?te(y,i,f,r):y,cim:e,materialOverrides:f,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:_(s.primitiveName,i,"StepY",r,h,d),scaleX:S,angle:_(s.primitiveName,i,"GridAngle",r,s.gridAngle),offsetX:_(s.primitiveName,i,"OffsetX",r,g(s.offsetX)),offsetY:_(s.primitiveName,i,"OffsetY",r,g(s.offsetY)),url:m}),!0}function W(e,t,i,r,l,a,s,c,f){var m;const p=e.primitiveName,u=g(e.size);let y=g(e.scaleX);const d=g(e.rotation),S=g(e.offsetX),v=g(e.offsetY),N=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},b=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),C=ee(e.markerPlacement,r,i,l),[k,O]=oe(r,p,t,C),P=n(JSON.stringify(e)+O).toString(),M=null!=(m=e.anchorPoint)?m:{x:0,y:0};if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),y/=i*(u/t)}s.push({type:"marker",templateHash:P,materialHash:k?()=>b:b,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:!1,alignment:c,size:_(p,i,"Size",l,u),scaleX:_(p,i,"ScaleX",l,y),rotation:_(p,i,"Rotation",l,d),offsetX:_(p,i,"OffsetX",l,S),offsetY:_(p,i,"OffsetY",l,v),color:_(p,i,"TintColor",l,N,Q),anchorPoint:{x:M.x,y:-M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:e.rotateClockwise,referenceSize:f,sizeRatio:1,markerPlacement:e.markerPlacement,url:e.url})}function D(e,t,i,o,r,n,l,a,s,c){const f=e.markerGraphics;if(!f)return;let m=0;if(e.scaleSymbolsProportionally){const t=e.frame;t&&(m=t.ymax-t.ymin)}const p=ee(e.markerPlacement,o,i,r);for(const u of f)if(u){const f=u.symbol;if(!f)continue;switch(f.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":G(e,t,p,u,o,i,r,n,l,a,s,m,c);break;case"CIMTextSymbol":U(e,t,p,u,i,o,r,n,a,s,m)}}}function U(e,t,i,o,r,l,a,f,m,p,u){const y=[];c.findApplicableOverrides(o,l,y);const v=o.geometry;if(!("x"in v)||!("y"in v))return;const N=o.symbol,b=X(N),C=w(N.fontStyleName),O=k(N.fontFamilyName);N.font={family:O,decoration:b,...C};const P=e.frame,M=v.x-.5*(P.xmin+P.xmax),x=v.y-.5*(P.ymin+P.ymax),z=e.size/u,J=e.primitiveName,H=g(N.height)*z,R=g(N.angle),Y=(g(N.offsetX)+M)*z,A=(g(N.offsetY)+x)*z,E=h(s.getFillColor(N));let $=h(s.getStrokeColor(N)),j=s.getStrokeWidth(N);j||($=h(s.getFillColor(N.haloSymbol)),j=N.haloSize*z);const[F,T]=oe(l,J,t,i),W=JSON.stringify(e.effects)+Number(e.colorLocked)+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement),D=n(JSON.stringify(o)+W+T).toString(),U=_(o.primitiveName,r,"TextString",a,o.textString,d,N.textCase);if(null==U)return;const{fontStyleName:G}=N,B=O+(G?"-"+G.toLowerCase():"-regular"),q=B;f.push({type:"text",templateHash:D,materialHash:F||"function"==typeof U||U.match(/\[(.*?)\]/)?(e,t,i)=>q+"-"+S(U,e,t,i):q+"-"+n(U),cim:N,materialOverrides:null,colorLocked:e.colorLocked,effects:t,alignment:m,anchorPoint:{x:e.anchorPoint?e.anchorPoint.x:0,y:e.anchorPoint?e.anchorPoint.y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:B,decoration:b,weight:_(J,r,"Weight",a,C.weight),style:_(J,r,"Size",a,C.style),size:_(J,r,"Size",a,H),angle:_(J,r,"Rotation",a,R),offsetX:_(J,r,"OffsetX",a,Y),offsetY:_(J,r,"OffsetY",a,A),horizontalAlignment:I(N.horizontalAlignment),verticalAlignment:L(N.verticalAlignment),text:U,color:E,outlineColor:$,outlineSize:j,referenceSize:p,sizeRatio:1,markerPlacement:i})}function G(e,t,i,r,l,a,c,f,m,p,d,S,v){const N=r.symbol,C=N.symbolLayers;if(!C)return;if(v)return void q(e,t,i,r,a,l,c,f,m,p,d,S);let k=C.length;if(ne(C))return void B(e,t,i,r,C,l,a,c,f,p,d,S);const O=b.applyEffects(N.effects,r.geometry,m.geometryEngine);if(O)for(;k--;){const v=C[k];if(v&&!1!==v.enable)switch(v.type){case"CIMSolidFill":case"CIMSolidStroke":{var P;const N=b.applyEffects(v.effects,O,m.geometryEngine),C=u(N);if(!C)continue;const[k,M,I]=y(C,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),L="CIMSolidFill"===v.type,w={type:"sdf",geom:N,asFill:L},X=e.primitiveName,x=null!=(P=g(e.size))?P:10,z=g(e.rotation),J=g(e.offsetX),H=g(e.offsetY),R=v.path,Y=v.primitiveName,A=h(L?s.getFillColor(v):s.getStrokeColor(v)),E=L?{r:0,g:0,b:0,a:0}:h(s.getStrokeColor(v)),$=s.getStrokeWidth(v);if(!L&&!$)break;let j=!1,F="";for(const e of l)e.primitiveName!==Y&&e.primitiveName!==X||(void 0!==e.value?F+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(j=!0));o(t)&&"function"==typeof t&&(j=!0);const T=JSON.stringify({...e,markerGraphics:null}),W=n(JSON.stringify(w)+R).toString(),D={type:"marker",templateHash:n(JSON.stringify(r)+JSON.stringify(v)+T+F).toString(),materialHash:j?()=>W:W,cim:w,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:p,anchorPoint:{x:M,y:I},isAbsoluteAnchorPoint:!1,size:_(e.primitiveName,a,"Size",c,x),rotation:_(e.primitiveName,a,"Rotation",c,z),offsetX:_(e.primitiveName,a,"OffsetX",c,J),offsetY:_(e.primitiveName,a,"OffsetY",c,H),scaleX:1,frameHeight:S,rotateClockwise:e.rotateClockwise,referenceSize:d,sizeRatio:k,color:_(Y,a,"Color",c,A,Q),outlineColor:_(Y,a,"Color",c,E,Q),outlineWidth:_(Y,a,"Width",c,$),markerPlacement:i,path:R};f.push(D);break}default:q(e,t,i,r,a,l,c,f,m,p,d,S)}}}function B(e,t,i,o,r,l,a,c,f,m,p,d){const S=o.geometry,v=r[0],N=r[1],b=u(S);if(!b)return;const[C,k,O]=y(b,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),P={type:"sdf",geom:S,asFill:!0},M=e.primitiveName,I=g(e.size),L=g(e.rotation),w=g(e.offsetX),X=g(e.offsetY),x=N.path,z=N.primitiveName,J=v.primitiveName,H=h(s.getFillColor(N)),R=h(s.getStrokeColor(v)),Y=s.getStrokeWidth(v);let A=!1,E="";for(const n of l)n.primitiveName!==z&&n.primitiveName!==J&&n.primitiveName!==M||(void 0!==n.value?E+=`-${n.primitiveName}-${n.propertyName}-${JSON.stringify(n.value)}`:n.valueExpressionInfo&&(A=!0));const $=JSON.stringify({...e,markerGraphics:null}),j=n(JSON.stringify(P)+x).toString(),F={type:"marker",templateHash:n(JSON.stringify(o)+JSON.stringify(N)+JSON.stringify(v)+$+E).toString(),materialHash:A?()=>j:j,cim:P,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:m,anchorPoint:{x:k,y:O},isAbsoluteAnchorPoint:!1,size:_(e.primitiveName,a,"Size",c,I),rotation:_(e.primitiveName,a,"Rotation",c,L),offsetX:_(e.primitiveName,a,"OffsetX",c,w),offsetY:_(e.primitiveName,a,"OffsetY",c,X),scaleX:1,frameHeight:d,rotateClockwise:e.rotateClockwise,referenceSize:p,sizeRatio:C,color:_(z,a,"Color",c,H,Q),outlineColor:_(J,a,"Color",c,R,Q),outlineWidth:_(J,a,"Width",c,Y),markerPlacement:i,path:x};f.push(F)}function q(e,t,i,l,a,c,f,m,p,u,y,h){const d=V(e,l);let S=[];const v=["Rotation","OffsetX","OffsetY"];S=c.filter((t=>t.primitiveName!==e.primitiveName||-1===v.indexOf(t.propertyName)));let N="";for(const o of c)void 0!==o.value&&(N+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`);const[b,C,k]=s.getTextureAnchor(d,p),O=e.primitiveName,P=g(e.rotation),M=g(e.offsetX),I=g(e.offsetY),L=n(JSON.stringify(d)+N).toString(),w={type:"marker",templateHash:L,materialHash:S.length>0||o(t)&&"function"==typeof t?te(L,a,S,f):L,cim:d,materialOverrides:S,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:u,anchorPoint:{x:b,y:C},isAbsoluteAnchorPoint:!1,size:e.size,rotation:_(O,a,"Rotation",f,P),offsetX:_(O,a,"OffsetX",f,M),offsetY:_(O,a,"OffsetY",f,I),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:h,rotateClockwise:e.rotateClockwise,referenceSize:y,sizeRatio:k/r(e.size),markerPlacement:i};m.push(w)}function V(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 K(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function Q(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function _(e,t,i,o,r,n,l){const s=t[e];if(s){const e=s[i];if("string"==typeof e||"number"==typeof e||e instanceof Array)return n?n.call(null,e,l):e;if(null!=e&&e instanceof a)return(t,i,a)=>{let s=C(e,t,{$view:a},o.geometryType,i);return null!==s&&n&&(s=n.call(null,s,l)),null!==s?s:r}}return r}function Z(e,i,o,r){for(const t of i){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>C(e,t,{$view:o},r.geometryType,i))}}const n=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(o,r,l)=>{for(const e of i)e.fn&&(e.value=e.fn(o,r,l));const a=[];for(let c of e){var s;const e=null==(s=c)?void 0:s.primitiveName;if(e){let o=!1;for(const r of i)if(r.primitiveName===e){const e=n(r.propertyName);null!=r.value&&r.value!==c[e]&&(o||(c=t(c),o=!0),c[e]=r.value)}}a.push(c)}return a}}function ee(e,i,o,r){const n=[];if(c.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>C(e,t,{$view:o},r.geometryType,i))}}const l=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const a=t(e),s=e.primitiveName;for(const e of n)if(e.primitiveName===s){const t=l(e.propertyName);null!=e.value&&e.value!==a[t]&&(a[t]=e.value)}return a}}function te(e,t,i,o){for(const r of i){if(r.valueExpressionInfo){const e=t[r.primitiveName]&&t[r.primitiveName][r.propertyName];e instanceof a&&(r.fn=(t,i,r)=>C(e,t,{$view:r},o.geometryType,i))}}return(t,o,r)=>{for(const e of i)e.fn&&(e.value=e.fn(t,o,r));return n(e+c.buildOverrideKey(i)).toString()}}function ie(e,t){if(!t||0===t.length)return e;const i=JSON.parse(JSON.stringify(e));return c.applyOverrides(i,t),i}function oe(e,t,i,r){let n=!1,l="";for(const o of e)o.primitiveName===t&&(void 0!==o.value?l+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`:o.valueExpressionInfo&&(n=!0));return o(i)&&"function"==typeof i&&(n=!0),o(r)&&"function"==typeof r&&(n=!0),[n,l]}function re(e,t,i){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(ae(e,t,i),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&i.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&re(o,t,i)}}}}}}const ne=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&!e[0].effects&&!e[1].effects;let le;function ae(e,t,i){if(!e.effects||o(t.geometryEngine))return;if(le)return void i.push(le);v(e.effects)&&(le=N(),i.push(le),le.then((e=>t.geometryEngine=e)))}export{ie as analyzeCIMResource,J as analyzeCIMSymbol};
5
+ import e from"../../Color.js";import{clone as t}from"../../core/lang.js";import i from"../../core/Logger.js";import{isSome as o}from"../../core/maybe.js";import{pt2px as r}from"../../core/screenUtils.js";import{numericHash as n}from"../../core/string.js";import{createRendererExpression as l,ArcadeExpression as a}from"../../support/arcadeOnDemand.js";import{CIMSymbolHelper as s,OverrideHelper as c}from"./CIMSymbolHelper.js";import{CapType as f,JoinType as m,Alignment as p}from"./enums.js";import{getExtent as u,getSDFMetrics as y}from"./SDFHelper.js";import{fromCIMColor as h,getValue as g,_adjustTextCase as d,evaluateValueOrFunction as S,isGeometryEngineRequired as v,importGeometryEngine as N}from"./utils.js";import{CIMEffectHelper as b}from"./effects/CIMEffectHelper.js";import C from"../../views/2d/arcade/callExpressionWithFeature.js";import{getFontFamily as k}from"../../views/2d/engine/webgl/fontUtils.js";const O=i.getLogger("esri.symbols.cim.cimAnalyzer");function P(e){switch(e){case"Butt":return f.BUTT;case"Square":return f.SQUARE;default:return f.ROUND}}function M(e){switch(e){case"Bevel":return m.BEVEL;case"Miter":return m.MITER;default:return m.ROUND}}function L(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return"justify"}}function I(e){switch(e){case"Top":default:return"top";case"Center":return"middle";case"Baseline":return"baseline";case"Bottom":return"bottom"}}function w(e){let t="",i="";if(e){const o=e.toLowerCase();-1!==o.indexOf("italic")?t="italic":-1!==o.indexOf("oblique")&&(t="oblique"),-1!==o.indexOf("bold")?i="bold":-1!==o.indexOf("light")&&(i="lighter")}return{style:t,weight:i}}function X(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function x(e,t,i,o){let r;e[t]?r=e[t]:(r={},e[t]=r),r[i]=o}function z(e){const t=e.markerPlacement;return t&&t.angleToLine?p.MAP:p.SCREEN}async function J(e,t,i,o,r){const n=null!=o?o:[];if(!e)return n;let a,s;const c={};if("CIMSymbolReference"!==e.type)return O.error("Expect cim type to be 'CIMSymbolReference'"),n;if(a=e.symbol,s=e.primitiveOverrides,s){const e=[];for(const i of s){const o=i.valueExpressionInfo;if(o&&t){const r=o.expression,n=l(r,t.spatialReference,t.fields).then((e=>{e&&x(c,i.primitiveName,i.propertyName,e)}));e.push(n)}else null!=i.value&&x(c,i.primitiveName,i.propertyName,i.value)}e.length>0&&await Promise.all(e)}const f=[];switch(re(a,i,f),f.length>0&&await Promise.all(f),a.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":H(a,s,c,t,n,i,r)}return n}function H(e,t,i,o,r,n,l){if(!e)return;const a=e.symbolLayers;if(!a)return;const f=e.effects;let m;const u=s.getSize(e);"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(m=p.MAP);let y=a.length;for(;y--;){const s=a[y];if(!s||!1===s.enable)continue;let p;f&&f.length&&(p=[...f]);const h=s.effects;h&&h.length&&(f?p.push(...h):p=[...h]);const g=[];let d;c.findEffectOverrides(p,t,g),d=g.length>0?Z(p,g,i,o):p;const S=[];switch(c.findApplicableOverrides(s,t,S),s.type){case"CIMSolidFill":R(s,d,i,S,o,r);break;case"CIMPictureFill":Y(s,d,i,S,o,n,r);break;case"CIMHatchFill":A(s,d,i,S,o,r);break;case"CIMGradientFill":E(s,d,i,S,o,r);break;case"CIMSolidStroke":$(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMPictureStroke":j(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMGradientStroke":F(s,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMCharacterMarker":if(T(s,d,i,S,o,r))break;break;case"CIMPictureMarker":if(T(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=z(s)),W(s,d,i,S,o,n,r,m,u);break;case"CIMVectorMarker":if(T(s,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=z(s)),D(s,d,i,S,o,r,n,m,u,l);break;default:O.error("Cannot analyze CIM layer",s.type)}}}function R(e,t,i,o,r,l){const a=e.primitiveName,s=h(e.color),[c,f]=oe(o,a,t,null),m=n(JSON.stringify(e)+f).toString();l.push({type:"fill",templateHash:m,materialHash:c?()=>m:m,cim:e,materialOverrides:null,colorLocked:e.colorLocked,color:_(a,i,"Color",r,s,Q),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t})}function Y(e,t,i,r,l,a,s){const c=e.primitiveName,f=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},[m,p]=oe(r,c,t,null),u=n(JSON.stringify(e)+p).toString(),y=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString();let d=g(e.scaleX);if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),d/=i*(e.height/t)}s.push({type:"fill",templateHash:u,materialHash:m?()=>y:y,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:_(c,i,"TintColor",l,f,Q),height:_(c,i,"Height",l,e.height),scaleX:_(c,i,"ScaleX",l,d),angle:_(c,i,"Rotation",l,g(e.rotation)),offsetX:_(c,i,"OffsetX",l,g(e.offsetX)),offsetY:_(c,i,"OffsetY",l,g(e.offsetY)),url:e.url})}function A(e,t,i,o,r,l){const a=["Rotation","OffsetX","OffsetY"],s=o.filter((t=>t.primitiveName!==e.primitiveName&&-1===a.indexOf(t.propertyName))),c=e.primitiveName,[f,m]=oe(o,c,t,null),p=n(JSON.stringify(e)+m).toString(),u=n(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();l.push({type:"fill",templateHash:p,materialHash:f?te(u,i,s,r):u,cim:e,materialOverrides:s,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:_(c,i,"Separation",r,e.separation),scaleX:1,angle:_(c,i,"Rotation",r,g(e.rotation)),offsetX:_(c,i,"OffsetX",r,g(e.offsetX)),offsetY:_(c,i,"OffsetY",r,g(e.offsetY))})}function E(e,t,i,o,r,l){const a=e.primitiveName,[s,c]=oe(o,a,t,null),f=n(JSON.stringify(e)+c).toString();l.push({type:"fill",templateHash:f,materialHash:s?te(f,i,o,r):f,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1})}function $(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=h(e.color),m=void 0!==e.width?e.width:4,p=P(e.capStyle),u=M(e.joinStyle),y=e.miterLimit,[g,d]=oe(o,c,t,null),S=n(JSON.stringify(e)+d).toString();let v,N;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();v=e.dashTemplate,N=e.scaleDash}}l.push({type:"line",templateHash:S,materialHash:g?()=>S:S,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:_(c,i,"Color",r,f,Q),width:_(c,i,"Width",r,m),cap:_(c,i,"CapStyle",r,p),join:_(c,i,"JoinStyle",r,u),miterLimit:_(c,i,"MiterLimit",r,y),referenceWidth:s,zOrder:K(e.name),dashTemplate:v,scaleDash:N})}function j(e,t,i,o,r,l,a,s){const c=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),f=e.primitiveName,m=h(e.tintColor),p=void 0!==e.width?e.width:4,u=P(e.capStyle),y=M(e.joinStyle),g=e.miterLimit,[d,S]=oe(o,f,t,null),v=n(JSON.stringify(e)+S).toString();l.push({type:"line",templateHash:v,materialHash:d?()=>c:c,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:_(f,i,"TintColor",r,m,Q),width:_(f,i,"Width",r,p),cap:_(f,i,"CapStyle",r,u),join:_(f,i,"JoinStyle",r,y),miterLimit:_(f,i,"MiterLimit",r,g),referenceWidth:s,zOrder:K(e.name),dashTemplate:null,scaleDash:!1,url:e.url})}function F(e,t,i,o,r,l,a,s){const c=e.primitiveName,f=void 0!==e.width?e.width:4,m=P(e.capStyle),p=M(e.joinStyle),u=e.miterLimit,[y,h]=oe(o,c,t,null),g=n(JSON.stringify(e)+h).toString();l.push({type:"line",templateHash:g,materialHash:y?te(g,i,o,r):g,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:_(c,i,"Width",r,f),cap:_(c,i,"CapStyle",r,m),join:_(c,i,"JoinStyle",r,p),miterLimit:_(c,i,"MiterLimit",r,u),referenceWidth:s,zOrder:K(e.name),dashTemplate:null,scaleDash:!1})}function T(e,t,i,o,r,l){const a=e.markerPlacement;if(!a||"CIMMarkerPlacementInsidePolygon"!==a.type)return!1;const s=a,c=["Rotation","OffsetX","OffsetY"],f=o.filter((t=>t.primitiveName!==e.primitiveName&&-1===c.indexOf(t.propertyName))),m="url"in e?e.url:null,[p,u]=oe(o,s.primitiveName,t,null),y=n(JSON.stringify(e)+u).toString();let h=s.stepY,d=null,S=1;return a.shiftOddRows&&(h*=2,d=function(e){return e?2*e:0},S=.5),l.push({type:"fill",templateHash:y,materialHash:p?te(y,i,f,r):y,cim:e,materialOverrides:f,colorLocked:e.colorLocked,effects:t,color:{r:255,g:255,b:255,a:1},height:_(s.primitiveName,i,"StepY",r,h,d),scaleX:S,angle:_(s.primitiveName,i,"GridAngle",r,s.gridAngle),offsetX:_(s.primitiveName,i,"OffsetX",r,g(s.offsetX)),offsetY:_(s.primitiveName,i,"OffsetY",r,g(s.offsetY)),url:m}),!0}function W(e,t,i,r,l,a,s,c,f){var m;const p=e.primitiveName,u=g(e.size);let y=g(e.scaleX);const d=g(e.rotation),S=g(e.offsetX),v=g(e.offsetY),N=e.tintColor?h(e.tintColor):{r:255,g:255,b:255,a:1},b=n(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),C=ee(e.markerPlacement,r,i,l),[k,O]=oe(r,p,t,C),P=n(JSON.stringify(e)+O).toString(),M=null!=(m=e.anchorPoint)?m:{x:0,y:0};if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),y/=i*(u/t)}s.push({type:"marker",templateHash:P,materialHash:k?()=>b:b,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:!1,alignment:c,size:_(p,i,"Size",l,u),scaleX:_(p,i,"ScaleX",l,y),rotation:_(p,i,"Rotation",l,d),offsetX:_(p,i,"OffsetX",l,S),offsetY:_(p,i,"OffsetY",l,v),color:_(p,i,"TintColor",l,N,Q),anchorPoint:{x:M.x,y:-M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:e.rotateClockwise,referenceSize:f,sizeRatio:1,markerPlacement:e.markerPlacement,url:e.url})}function D(e,t,i,o,r,n,l,a,s,c){const f=e.markerGraphics;if(!f)return;let m=0;if(e.scaleSymbolsProportionally){const t=e.frame;t&&(m=t.ymax-t.ymin)}const p=ee(e.markerPlacement,o,i,r);for(const u of f)if(u){const f=u.symbol;if(!f)continue;switch(f.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":G(e,t,p,u,o,i,r,n,l,a,s,m,c);break;case"CIMTextSymbol":U(e,t,p,u,i,o,r,n,a,s,m)}}}function U(e,t,i,o,r,l,a,f,m,p,u){const y=[];c.findApplicableOverrides(o,l,y);const v=o.geometry;if(!("x"in v)||!("y"in v))return;const N=o.symbol,b=X(N),C=w(N.fontStyleName),O=k(N.fontFamilyName);N.font={family:O,decoration:b,...C};const P=e.frame,M=v.x-.5*(P.xmin+P.xmax),x=v.y-.5*(P.ymin+P.ymax),z=e.size/u,J=e.primitiveName,H=g(N.height)*z,R=g(N.angle),Y=g(e.offsetX)+(g(N.offsetX)+M)*z,A=g(e.offsetY)+(g(N.offsetY)+x)*z,E=h(s.getFillColor(N));let $=h(s.getStrokeColor(N)),j=s.getStrokeWidth(N);j||($=h(s.getFillColor(N.haloSymbol)),j=N.haloSize*z);const[F,T]=oe(l,J,t,i),W=JSON.stringify(e.effects)+Number(e.colorLocked)+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement),D=n(JSON.stringify(o)+W+T).toString(),U=_(o.primitiveName,r,"TextString",a,o.textString,d,N.textCase);if(null==U)return;const{fontStyleName:G}=N,B=O+(G?"-"+G.toLowerCase():"-regular"),q=B;f.push({type:"text",templateHash:D,materialHash:F||"function"==typeof U||U.match(/\[(.*?)\]/)?(e,t,i)=>q+"-"+S(U,e,t,i):q+"-"+n(U),cim:N,materialOverrides:null,colorLocked:e.colorLocked,effects:t,alignment:m,anchorPoint:{x:e.anchorPoint?e.anchorPoint.x:0,y:e.anchorPoint?e.anchorPoint.y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:B,decoration:b,weight:_(J,r,"Weight",a,C.weight),style:_(J,r,"Size",a,C.style),size:_(J,r,"Size",a,H),angle:_(J,r,"Rotation",a,R),offsetX:_(J,r,"OffsetX",a,Y),offsetY:_(J,r,"OffsetY",a,A),horizontalAlignment:L(N.horizontalAlignment),verticalAlignment:I(N.verticalAlignment),text:U,color:E,outlineColor:$,outlineSize:j,referenceSize:p,sizeRatio:1,markerPlacement:i})}function G(e,t,i,r,l,a,c,f,m,p,d,S,v){const N=r.symbol,C=N.symbolLayers;if(!C)return;if(v)return void q(e,t,i,r,a,l,c,f,m,p,d,S);let k=C.length;if(ne(C))return void B(e,t,i,r,C,l,a,c,f,p,d,S);const O=b.applyEffects(N.effects,r.geometry,m.geometryEngine);if(O)for(;k--;){const v=C[k];if(v&&!1!==v.enable)switch(v.type){case"CIMSolidFill":case"CIMSolidStroke":{var P;const N=b.applyEffects(v.effects,O,m.geometryEngine),C=u(N);if(!C)continue;const[k,M,L]=y(C,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),I="CIMSolidFill"===v.type,w={type:"sdf",geom:N,asFill:I},X=e.primitiveName,x=null!=(P=g(e.size))?P:10,z=g(e.rotation),J=g(e.offsetX),H=g(e.offsetY),R=v.path,Y=v.primitiveName,A=h(I?s.getFillColor(v):s.getStrokeColor(v)),E=I?{r:0,g:0,b:0,a:0}:h(s.getStrokeColor(v)),$=s.getStrokeWidth(v);if(!I&&!$)break;let j=!1,F="";for(const e of l)e.primitiveName!==Y&&e.primitiveName!==X||(void 0!==e.value?F+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(j=!0));o(t)&&"function"==typeof t&&(j=!0);const T=JSON.stringify({...e,markerGraphics:null}),W=n(JSON.stringify(w)+R).toString(),D={type:"marker",templateHash:n(JSON.stringify(r)+JSON.stringify(v)+T+F).toString(),materialHash:j?()=>W:W,cim:w,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:p,anchorPoint:{x:M,y:L},isAbsoluteAnchorPoint:!1,size:_(e.primitiveName,a,"Size",c,x),rotation:_(e.primitiveName,a,"Rotation",c,z),offsetX:_(e.primitiveName,a,"OffsetX",c,J),offsetY:_(e.primitiveName,a,"OffsetY",c,H),scaleX:1,frameHeight:S,rotateClockwise:e.rotateClockwise,referenceSize:d,sizeRatio:k,color:_(Y,a,"Color",c,A,Q),outlineColor:_(Y,a,"Color",c,E,Q),outlineWidth:_(Y,a,"Width",c,$),markerPlacement:i,path:R};f.push(D);break}default:q(e,t,i,r,a,l,c,f,m,p,d,S)}}}function B(e,t,i,o,r,l,a,c,f,m,p,d){const S=o.geometry,v=r[0],N=r[1],b=u(S);if(!b)return;const[C,k,O]=y(b,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),P={type:"sdf",geom:S,asFill:!0},M=e.primitiveName,L=g(e.size),I=g(e.rotation),w=g(e.offsetX),X=g(e.offsetY),x=N.path,z=N.primitiveName,J=v.primitiveName,H=h(s.getFillColor(N)),R=h(s.getStrokeColor(v)),Y=s.getStrokeWidth(v);let A=!1,E="";for(const n of l)n.primitiveName!==z&&n.primitiveName!==J&&n.primitiveName!==M||(void 0!==n.value?E+=`-${n.primitiveName}-${n.propertyName}-${JSON.stringify(n.value)}`:n.valueExpressionInfo&&(A=!0));const $=JSON.stringify({...e,markerGraphics:null}),j=n(JSON.stringify(P)+x).toString(),F={type:"marker",templateHash:n(JSON.stringify(o)+JSON.stringify(N)+JSON.stringify(v)+$+E).toString(),materialHash:A?()=>j:j,cim:P,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:m,anchorPoint:{x:k,y:O},isAbsoluteAnchorPoint:!1,size:_(e.primitiveName,a,"Size",c,L),rotation:_(e.primitiveName,a,"Rotation",c,I),offsetX:_(e.primitiveName,a,"OffsetX",c,w),offsetY:_(e.primitiveName,a,"OffsetY",c,X),scaleX:1,frameHeight:d,rotateClockwise:e.rotateClockwise,referenceSize:p,sizeRatio:C,color:_(z,a,"Color",c,H,Q),outlineColor:_(J,a,"Color",c,R,Q),outlineWidth:_(J,a,"Width",c,Y),markerPlacement:i,path:x};f.push(F)}function q(e,t,i,l,a,c,f,m,p,u,y,h){const d=V(e,l);let S=[];const v=["Rotation","OffsetX","OffsetY"];S=c.filter((t=>t.primitiveName!==e.primitiveName||-1===v.indexOf(t.propertyName)));let N="";for(const o of c)void 0!==o.value&&(N+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`);const[b,C,k]=s.getTextureAnchor(d,p),O=e.primitiveName,P=g(e.rotation),M=g(e.offsetX),L=g(e.offsetY),I=n(JSON.stringify(d)+N).toString(),w={type:"marker",templateHash:I,materialHash:S.length>0||o(t)&&"function"==typeof t?te(I,a,S,f):I,cim:d,materialOverrides:S,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:u,anchorPoint:{x:b,y:C},isAbsoluteAnchorPoint:!1,size:e.size,rotation:_(O,a,"Rotation",f,P),offsetX:_(O,a,"OffsetX",f,M),offsetY:_(O,a,"OffsetY",f,L),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:h,rotateClockwise:e.rotateClockwise,referenceSize:y,sizeRatio:k/r(e.size),markerPlacement:i};m.push(w)}function V(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 K(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function Q(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function _(e,t,i,o,r,n,l){const s=t[e];if(s){const e=s[i];if("string"==typeof e||"number"==typeof e||e instanceof Array)return n?n.call(null,e,l):e;if(null!=e&&e instanceof a)return(t,i,a)=>{let s=C(e,t,{$view:a},o.geometryType,i);return null!==s&&n&&(s=n.call(null,s,l)),null!==s?s:r}}return r}function Z(e,i,o,r){for(const t of i){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>C(e,t,{$view:o},r.geometryType,i))}}const n=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(o,r,l)=>{for(const e of i)e.fn&&(e.value=e.fn(o,r,l));const a=[];for(let c of e){var s;const e=null==(s=c)?void 0:s.primitiveName;if(e){let o=!1;for(const r of i)if(r.primitiveName===e){const e=n(r.propertyName);null!=r.value&&r.value!==c[e]&&(o||(c=t(c),o=!0),c[e]=r.value)}}a.push(c)}return a}}function ee(e,i,o,r){const n=[];if(c.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof a&&(t.fn=(t,i,o)=>C(e,t,{$view:o},r.geometryType,i))}}const l=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const a=t(e),s=e.primitiveName;for(const e of n)if(e.primitiveName===s){const t=l(e.propertyName);null!=e.value&&e.value!==a[t]&&(a[t]=e.value)}return a}}function te(e,t,i,o){for(const r of i){if(r.valueExpressionInfo){const e=t[r.primitiveName]&&t[r.primitiveName][r.propertyName];e instanceof a&&(r.fn=(t,i,r)=>C(e,t,{$view:r},o.geometryType,i))}}return(t,o,r)=>{for(const e of i)e.fn&&(e.value=e.fn(t,o,r));return n(e+c.buildOverrideKey(i)).toString()}}function ie(e,t){if(!t||0===t.length)return e;const i=JSON.parse(JSON.stringify(e));return c.applyOverrides(i,t),i}function oe(e,t,i,r){let n=!1,l="";for(const o of e)o.primitiveName===t&&(void 0!==o.value?l+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`:o.valueExpressionInfo&&(n=!0));return o(i)&&"function"==typeof i&&(n=!0),o(r)&&"function"==typeof r&&(n=!0),[n,l]}function re(e,t,i){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(ae(e,t,i),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&i.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&re(o,t,i)}}}}}}const ne=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&!e[0].effects&&!e[1].effects;let le;function ae(e,t,i){if(!e.effects||o(t.geometryEngine))return;if(le)return void i.push(le);v(e.effects)&&(le=N(),i.push(le),le.then((e=>t.geometryEngine=e)))}export{ie as analyzeCIMResource,J as analyzeCIMSymbol};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.23/esri/copyright.txt for details.
4
4
  */
5
- import{PathTransformationCursor as t}from"../CIMCursor.js";import{PlacementEndings as e}from"../enums.js";import{GeometryWalker as s,DashPattern as i}from"../GeometryWalker.js";class n{static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,e,s,i){return new a(t,e,s)}}n.instance=null;class a extends t{constructor(t,e,n){var a,r,l,h;super(t,!0,!0),this._geometryWalker=new s,this._geometryWalker.updateTolerance(n),this._angleToLine=null==(a=e.angleToLine)||a,this._offset=(null!=(r=e.offset)?r:0)*n,this._originalEndings=e.endings,this._offsetAtEnd=(null!=(l=e.customEndingOffset)?l:0)*n,this._position=-(null!=(h=e.offsetAlongLine)?h:0)*n,this._pattern=new i,this._pattern.init(e.placementTemplate,!1),this._pattern.scale(n),this._endings=this._originalEndings}processPath(t){if(this._pattern.isEmpty())return null;let s;if(this.iteratePath)s=this._pattern.nextValue();else{this._originalEndings===e.WithFullGap&&this.isClosed?this._endings=e.WithMarkers:this._endings=this._originalEndings,this._pattern.extPtGap=0;let i,n=!0;switch(this._endings){case e.NoConstraint:i=-this._position,i=this._adjustPosition(i),n=!1;break;case e.WithHalfGap:default:i=-this._pattern.lastValue()/2;break;case e.WithFullGap:i=-this._pattern.lastValue(),this._pattern.extPtGap=this._pattern.lastValue();break;case e.WithMarkers:i=0;break;case e.Custom:i=-this._position,i=this._adjustPosition(i),this._pattern.extPtGap=.5*this._offsetAtEnd}if(!this._geometryWalker.init(t,this._pattern,n))return null;this._pattern.reset();let a=0;for(;i>a;)i-=a,a=this._pattern.nextValue();a-=i,s=a,this.iteratePath=!0}const i={};return this._geometryWalker.nextPointAndAngle(s,i)?this._endings===e.WithFullGap&&this._geometryWalker.isPathEnd()?(this.iteratePath=!1,null):this._endings===e.WithMarkers&&this._geometryWalker.isPathEnd()&&(this.iteratePath=!1,this.isClosed)?null:(this.internalPlacement.setTranslate(i.pt[0]-this._offset*i.sa,i.pt[1]+this._offset*i.ca),this._angleToLine&&this.internalPlacement.setRotateCS(i.ca,i.sa),this.internalPlacement):(this.iteratePath=!1,null)}_adjustPosition(t){let e=t/this._pattern.length();return e-=Math.floor(e),e*this._pattern.length()}}export{n as PlacementAlongLineSameSize};
5
+ import{PathTransformationCursor as t}from"../CIMCursor.js";import{PlacementEndings as e}from"../enums.js";import{GeometryWalker as s,DashPattern as i}from"../GeometryWalker.js";class n{static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,e,s,i){return new a(t,e,s)}}n.instance=null;class a extends t{constructor(t,e,n){var a;super(t,!0,!0),this._geometryWalker=new s,this._geometryWalker.updateTolerance(n),this._angleToLine=null==(a=e.angleToLine)||a,this._offset=(e.offset?e.offset:0)*n,this._originalEndings=e.endings,this._offsetAtEnd=(e.customEndingOffset?e.customEndingOffset:0)*n,this._position=-(e.offsetAlongLine?e.offsetAlongLine:0)*n,this._pattern=new i,this._pattern.init(e.placementTemplate,!1),this._pattern.scale(n),this._endings=this._originalEndings}processPath(t){if(this._pattern.isEmpty())return null;let s;if(this.iteratePath)s=this._pattern.nextValue();else{this._originalEndings===e.WithFullGap&&this.isClosed?this._endings=e.WithMarkers:this._endings=this._originalEndings,this._pattern.extPtGap=0;let i,n=!0;switch(this._endings){case e.NoConstraint:i=-this._position,i=this._adjustPosition(i),n=!1;break;case e.WithHalfGap:default:i=-this._pattern.lastValue()/2;break;case e.WithFullGap:i=-this._pattern.lastValue(),this._pattern.extPtGap=this._pattern.lastValue();break;case e.WithMarkers:i=0;break;case e.Custom:i=-this._position,i=this._adjustPosition(i),this._pattern.extPtGap=.5*this._offsetAtEnd}if(!this._geometryWalker.init(t,this._pattern,n))return null;this._pattern.reset();let a=0;for(;i>a;)i-=a,a=this._pattern.nextValue();a-=i,s=a,this.iteratePath=!0}const i={};return this._geometryWalker.nextPointAndAngle(s,i)?this._endings===e.WithFullGap&&this._geometryWalker.isPathEnd()?(this.iteratePath=!1,null):this._endings===e.WithMarkers&&this._geometryWalker.isPathEnd()&&(this.iteratePath=!1,this.isClosed)?null:(this.internalPlacement.setTranslate(i.pt[0]-this._offset*i.sa,i.pt[1]+this._offset*i.ca),this._angleToLine&&this.internalPlacement.setRotateCS(i.ca,i.sa),this.internalPlacement):(this.iteratePath=!1,null)}_adjustPosition(t){let e=t/this._pattern.length();return e-=Math.floor(e),e*this._pattern.length()}}export{n as PlacementAlongLineSameSize};